iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP怎么实现将Word文件保存到SQL Server数据库
  • 445
分享到

PHP怎么实现将Word文件保存到SQL Server数据库

2023-06-29 07:06:18 445人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关PHP怎么实现将Word文件保存到sql Server数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。完成界面:前端的页面文件:<!DOCTYPE 

这篇文章将为大家详细讲解有关PHP怎么实现将Word文件保存到sql Server数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

完成界面:

PHP怎么实现将Word文件保存到SQL Server数据库

前端的页面文件:

<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>layui</title>    <meta name="renderer" content="WEBkit">    <meta Http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">    <link rel="stylesheet" href="lib/layui-v2.6.3/CSS/layui.css" rel="external nofollow"  media="all">    <link rel="stylesheet" href="css/public.css" rel="external nofollow"  media="all">    <style>        body {            background-color: #ffffff;        }    </style></head><body><div class="layui-fORM layuimini-form"><form action="" class="layui-form login-bottom" id="uploadFile"><div class="layui-form-item"><label class="layui-form-label required">模板文件名</label><div class="layui-input-block"><input type="text" name="Dc01" id="Dc01" lay-verify="required" lay-reQtext="模板文件名称"  value="" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label required">简要说明</label><div class="layui-input-block"><input type="text" name="Dc04" id="Dc04" value="" class="layui-input"></div></div><div class="layui-form-item" ><label class="layui-form-label required">Word模板</label><div class="layui-input-inline" ><input type="text" name="Dc05" id="Dc05"  value=""  class="layui-input" disabled="disabled"></div><div class="layui-input-inline" ><!-- <input type="button" value="选择Word文件" id="selectWord" /> --><button type="button" class="layui-btn layui-btn-sm layui-btn-normal"  id="selectWord">选择Word文件</button><input type='file' id='readFile' ></div></div> <div class="layui-form-item"><label class="layui-form-label">项目名称</label><div class="layui-input-block"><input type="text" name="Dc06"  id="Dc06" value="" class="layui-input"></div></div> <div class="layui-form-item"><label class="layui-form-label">子项目名称</label><div class="layui-input-block"><input type="text" name="Dc07"  id="Dc07" value="" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">项目属性</label><div class="layui-input-inline"><select id="Dc08" name="Dc08" lay-filter="outUnitList"><option value="日常维护">服务</option><option value="定期巡检">物质采购</option><option value="数据处理">工程</option></select></div><label class="layui-form-label">适用年度</label><div class="layui-input-inline"><input type="text" name="Dc09"  id="Dc09" value="" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">上传人</label><div class="layui-input-inline"><input type="text" name="Dc02"  id="Dc02" value="" class="layui-input"></div><label class="layui-form-label">上传时间</label><div class="layui-input-inline"><input type="text" name="Dc03"  id="Dc03" value="" class="layui-input"></div></div><div class="layui-form-item"><div class="layui-input-block"><button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button></div></div></form></div><script src="lib/layui-v2.6.3/layui.js" charset="utf-8"></script><script>    layui.use(['layer','form','rate'], function () {        var form = layui.form, layer = layui.layer, $ = layui.$; let currentUser='';let currentDatetime='';//得到当前的用户名称$.ajax({url:'ZTBgetCurrentUser.php',type:'POST',async:false,success:function (data) {// $("input[name=C02]").val(data);document.getElementById('Dc02').value=data;currentUser=data;}});//得到当前服务器的时间$.ajax({url:'ZTBgetServerDatetime.php',type:'POST',async:false,success:function (data) {// $("input[name=C02]").val(data);document.getElementById('Dc03').value=data;document.getElementById('Dc09').value=data.substring(0,4);currentDatetime=data;}}); document.getElementById('selectWord').addEventListener('click',function(){$("#readFile").trigger("click");});  document.getElementById('readFile').addEventListener('change',function(){if(this.files.length===0){console.log('没有选择文件!');return;}let reader=new FileReader();reader.onload=function (){console.log(reader.result);}// reader.readAsText(this.files[0]);// console.log(this.files[0].size);// console.log(this.files[0].name);// document.getElementById('Dc05').document.getElementById('Dc05').value=this.files[0].name;// console.log(this.files[0].type);})  // localStorage.clear();        //监听提交        form.on('submit(saveBtn)', function (data) {data = data.field;//检查数据var canContinue=true;var strFalse="";var JSONData=[];//准备一个空数组 var updateData=new Object();//准备对象updateData.strTable="HtTemplateFile";updateData.strWhere="c01='"+document.getElementById("Dc01").value+"' and c08='"+document.getElementById("Dc08").value+"' and c09='"+document.getElementById("Dc09").value+"'";// console.log(updateData);jsonData.push(updateData);var json_str=JSON.stringify(jsonData);$.ajax({//检查数据库ID是否存在url:'ZTBIsExist.php',data:json_str,type:'POST',datetype:'json',async:false,success:function (data) {if(data=='YES'){ canContinue=false;strFalse="要插入的记录重复!";}}}); if(canContinue){// let formID = document.getElementById("uploadFile");// let formData = new FormData(formID);//FormData构造器接收的是一个form的DOM对象let wordFile = document.getElementById('readFile');//用FormData对象对表单数据进行封装const fd = new FormData();//FormData构造器接收的是一个form的DOM对象fd.append("wordFile",wordFile.files[0]);//Word文件数据fd.append("c01",$('#Dc01').val());//模板文件名fd.append("c02",currentUser);//上传人fd.append("c03",currentDatetime);//上传时间fd.append("c04",$('#Dc04').val());//简要说明fd.append("c06",$('#Dc06').val());//项目名称fd.append("c07",$('#Dc07').val());//子项目名称fd.append("c08",$('#Dc08').val());//项目类型fd.append("c09",$('#Dc09').val());//适用年度$.ajax({url: 'ZTBHTTemplateFileAdd.php',type: "POST",data: fd,dataType: "JSON",async: true,processData: false,//设置为false,Jquery则不对数据进行序列化contentType: false,//设置为false,JQuery则不设Content-Type请求头beforeSend: function(xhr){console.log('开始!');},complete: function(xhr,status){console.log('完成!');},error: function(xhr,status,error){console.log('请求出错!');},success: function(result){console.log('表单提交成功!');}}); return false;//阻止表单的默认提交事件}           });     });</script></body></html>

后台PHP文件:

<?php// error_reporting(0);session_start();$continue=true;$falseStr=""; //获取post的数据$C01 = $_POST['c01'];$C02 = $_POST['c02'];$C03 = $_POST['c03'];$C04 = $_POST['c04']; $C06 = $_POST['c06'];$C07 = $_POST['c07'];$C08 = $_POST['c08'];$C09 = $_POST['c09']; if(!isset($_FILES)){$returnArr['c05']='没有选择上传的文件';}else{$returnArr['c05']='有文件';} if($_FILES['wordFile']['error']>0){    $returnArr['c05']='文件有错误';} $uploadFile = $_FILES["wordFile"];//得到上传的文件$wordBlob=file_get_contents($uploadFile['tmp_name']);file_put_contents("123.docx",$wordBlob , FILE_APPEND);//将文件内容写到磁盘上//将内容字符串转为十六进制字符串$wordHexData = "0x".bin2hex($wordBlob); $returnArr['c01']=$C01;$returnArr['c02']=$C02;$returnArr['c03']=$C03;$returnArr['c04']=$C04; $returnArr['c06']=$C06;$returnArr['c07']=$C07;$returnArr['c08']=$C08;$returnArr['c09']=$C09; //准备写入数据库require 'ZTBLinkConfig.php';//准备插入数据$sql = "insert into HtTemplateFile(c01,c02,c03,c04,c06,c07,c08,c09,c05) values('$C01','$C02','$C03','$C04','$C06','$C07','$C08','$C09',$wordHexData)";$result =$ZTBConn->query($sql);$returnArr['c05']=$result; //读出来写到磁盘上,这样可以判断上传文件是否真的写入了。// $sql = "select * from  HtTemplateFile where c01='模板文件名' and c08='项目属性' and c09='2021'";// $result =$ZTBConn->query($sql);// while($row=$result->fetch()){//         $hexData= $row['c05'];// } // $binData=hex2bin($hexData);// file_put_contents("333.docx",$hexData , FILE_APPEND);//将文件内容写到磁盘上 echo json_encode($returnArr,JSON_UNESCAPED_UNICODE);?>

注意点:

1、美化上传按钮

普通的文件上传按钮不好看,与整个界面不协调,放上一个DIV后再放一个LayUI的按钮就可以了,然后使用事件代理,触发实际文件的上传,是change事件。

        document.getElementById('selectWord').addEventListener('click',function(){            $("#readFile").trigger("click");                    });

2、封装上传的数据

使用formData,可以封装整个form。

let formID = document.getElementById("uploadFile");let formData = new FormData(formID);//FormData构造器接收的是一个form的DOM对象

也可以按照要求逐个添加。

let wordFile = document.getElementById('readFile');//用FormData对象对表单数据进行封装const fd = new FormData();//FormData构造器接收的是一个form的DOM对象                    fd.append("wordFile",wordFile.files[0]);//Word文件数据fd.append("c01",$('#Dc01').val());//模板文件名fd.append("c02",currentUser);//上传人fd.append("c03",currentDatetime);//上传时间fd.append("c04",$('#Dc04').val());//简要说明fd.append("c06",$('#Dc06').val());//项目名称fd.append("c07",$('#Dc07').val());//子项目名称fd.append("c08",$('#Dc08').val());//项目类型fd.append("c09",$('#Dc09').val());//适用年度

既然是对象,最好使用const定义。

完整的上传,使用ajax。

$.ajax({url: 'ZTBHTTemplateFileAdd.php',type: "POST",data: fd,dataType: "JSON",async: true,processData: false,//设置为false,JQuery则不对数据进行序列化contentType: false,//设置为false,JQuery则不设Content-Type请求头beforeSend: function(xhr){console.log('开始!');},complete: function(xhr,status){console.log('完成!');},error: function(xhr,status,error){console.log('请求出错!');},success: function(result){console.log('表单提交成功!');}}); return false;//阻止表单的默认提交事件}

注意,返回值一定要是JSON格式!!!

接收上传的数据,我为了检查数据,是生成在磁盘上,这样就好判断上传的结果,保存到数据库后也是先取出来再写到磁盘上来判断。

保存的时候需要将数据转成16进制的,读取出来就不用再转了!

写入数据库前写入磁盘:

$uploadFile = $_FILES["wordFile"];//得到上传的文件$wordBlob=file_get_contents($uploadFile['tmp_name']);file_put_contents("123.docx",$wordBlob , FILE_APPEND);//将文件内容写到磁盘上//将内容字符串转为十六进制字符串$wordHexData = "0x".bin2hex($wordBlob);

从数据库中读出来再写入磁盘:

//读出来写到磁盘上,这样可以判断上传文件是否真的写入了。$sql = "select * from  HtTemplateFile where c01='模板文件名' and c08='项目属性' and c09='2021'";$result =$ZTBConn->query($sql);while($row=$result->fetch()){         $hexData= $row['c05'];} file_put_contents("333.docx",$hexData , FILE_APPEND);//将文件内容写到磁盘上

MS SQL Server 2014的文件字段为image。

关于“PHP怎么实现将Word文件保存到SQL Server数据库”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: PHP怎么实现将Word文件保存到SQL Server数据库

本文链接: http://www.lsjlt.com/news/323528.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP怎么实现将Word文件保存到SQL Server数据库
    这篇文章将为大家详细讲解有关PHP怎么实现将Word文件保存到SQL Server数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。完成界面:前端的页面文件:<!DOCTYPE ...
    99+
    2023-06-29
  • PHP实现将Word文件保存到SQLServer数据库
    算起来,折腾了整整一天,就是完成将上传的Word文件保存到MS SQL Server 2014数据库中。 第一次使用PHP来开发一个小程序,压力也挺大,主要是用户觉得我很快就能完成,...
    99+
    2024-04-02
  • php怎么正确将时间戳保存到数据库
    这篇“php怎么正确将时间戳保存到数据库”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php怎么正确将时间戳保存到数据库”文...
    99+
    2023-07-05
  • php如何实现sql server数据导入到mysql数据库
    这篇文章主要介绍了php如何实现sql server数据导入到mysql数据库的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何实现sql server数据导入到mysql数据库文章都会有所收获,下面我们...
    99+
    2023-07-05
  • sql怎么保存数据库
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-30
  • python怎么将数据保存到mysql
    python将数据保存到mysql的示例代码:import MySQLdb# connect MySQLconn = MySQLdb.connect(host= ,user=&nb...
    99+
    2024-04-02
  • pycharm怎么将文件保存到桌面
    要将文件保存到桌面上,需遵循以下步骤:打开桌面文件夹;在 pycharm 中打开目标文件;点击“文件” - “另存为” - “桌面”;输入文件名并点击“保存”。 如何将文件保存到桌面上...
    99+
    2024-04-18
    pycharm
  • 如何将PHP对象数组保存到文件中?
    在PHP开发中,我们经常需要将对象数组保存到文件中,以便于后续的读取和处理。这篇文章将会介绍如何将PHP对象数组保存到文件中,同时提供相应的代码演示。 一、使用serialize()函数 PHP中提供了一个serialize()函数,可以将...
    99+
    2023-08-26
    对象 数组 文件
  • 如何将 .sql 文件导入到 MySQL 数据库?
    导入 SQL 文件到 MySQL 数据库是一个常见的任务,本文将介绍如何执行该操作。我们将逐步讲解具体的步骤,帮助您完成这个过程。 步骤 1: 打开命令提示符或终端 首先,在您的计算机上打开命令提示符或终端窗口。这将是执行导入操作的地方。 ...
    99+
    2023-09-18
    数据库 mysql sql
  • VBA怎么将文件存入数据库
    要将文件存入数据库,你可以使用VBA来执行以下步骤:1. 连接到数据库:首先,你需要在VBA代码中建立与数据库的连接。你可以使用AD...
    99+
    2023-09-12
    VBA 数据库
  • sql数据库做完怎么保存
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-30
  • 怎么将sql文件导入mysql数据库
    这篇文章将为大家详细讲解有关怎么将sql文件导入mysql数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。将sql文件导入mysql数据库的方法:首先打开mysql,...
    99+
    2024-04-02
  • Sql Server 数据库中怎么调用dll文件
    Sql Server 数据库中怎么调用dll文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.首先新建一个空的解决方案,并...
    99+
    2024-04-02
  • 怎么导入sql文件到数据库
    要导入一个sql文件到数据库中,可以使用以下方法: 使用命令行工具:可以使用命令行工具来导入sql文件到数据库中。在命令行中输入以...
    99+
    2024-04-09
    数据库
  • sql查询结果怎么保存到文件
    在 SQL 查询中,可以使用以下方法将查询结果保存到文件: 使用 SQL 查询语句的结果导出功能。不同的数据库管理系统(DBMS)...
    99+
    2024-04-09
    sql
  • R语言怎么将数据保存为Excel文件
    要将数据保存为Excel文件,可以使用R语言中的write.xlsx函数。首先需要安装openxlsx包,然后使用以下代码将数据保存...
    99+
    2024-04-08
    R语言
  • 怎么在Sql Server 数据库中调用dll文件
    怎么在Sql Server 数据库中调用dll文件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.首先新建一个空的解决方案,并添加一个类库,...
    99+
    2024-04-02
  • Sql Server数据库文件丢失要怎么恢复
    这篇文章主要讲解了“Sql Server数据库文件丢失要怎么恢复”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Sql Server数据库文件丢失要怎么恢复”...
    99+
    2024-04-02
  • Sql Server中怎么删除数据库备份文件
    这篇文章将为大家详细讲解有关Sql Server中怎么删除数据库备份文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。代码如下: --可以先备份数据库[T...
    99+
    2024-04-02
  • java怎么将输出内容保存到文件
    在Java中,可以使用FileWriter或BufferedWriter类将输出内容保存到文件中。下面是一个简单的示例代码,演示了如...
    99+
    2023-10-18
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作