目前小程序沒有能實現(xiàn)此功能的 API 所以我這里通過使用 web-view 實現(xiàn);
實現(xiàn)流程:
1. 在小程序后臺配置業(yè)務(wù)域名
2. 在服務(wù)器寫一個html,實現(xiàn)表單上傳文件
3.后端php接收文件并存到一個服務(wù)器文件夾,把文件名存到數(shù)據(jù)庫以后檢索用
4.在微信小程序創(chuàng)建一個頁面,里面使用web-view達到上傳文件的目的;
效果圖:
具體實現(xiàn):
1. 在小程序后臺配置業(yè)務(wù)域名
地址:https://mp.weixin.qq.com/wxopen/appdatacount
2. 在服務(wù)器寫一個html,實現(xiàn)表單上傳文件
index.html文件
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" /> <meta charset="UTF-8"> <title>Title</title> <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.js"></script> </head> <body> <form id="form1" action="https://dwb.lynncain.cn/H5/up_file.php" target="frame1" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="button" value="上傳" onclick="upload()"> </form> <iframe name="frame1" frameborder="0" height="40"></iframe> <!-- 其實我們可以把iframe標(biāo)簽隱藏掉 --> <script type="text/javascript"> function upload() { $("#form1").submit(); var t = setInterval(function() { //獲取iframe標(biāo)簽里body元素里的文字。即服務(wù)器響應(yīng)過來的"上傳成功"或"上傳失敗" var word = $("iframe[name='frame1']").contents().find("body").text(); if(word != "") { // alert(word); //彈窗提示是否上傳成功 // clearInterval(t); //清除定時器 } }, 1000); } </script> </body> </html>
登錄后復(fù)制
3.后端php接收文件并存到一個服務(wù)器文件夾,把文件名存到數(shù)據(jù)庫以后檢索用
up_file.php 文件:
<?php header("Content-Type:text/html;charset=utf8"); header("Access-Control-Allow-Origin: *"); //解決跨域 header('Access-Control-Allow-Methods:POST');// 響應(yīng)類型 header('Access-Control-Allow-Headers:*'); // 響應(yīng)頭設(shè)置 $link=mysql_connect("localhost","root","root"); mysql_select_db("new_test", $link); //選擇數(shù)據(jù)庫 mysql_query("SET NAMES utf8");//解決中文亂碼問題 error_reporting(0); if ($_FILES["file"]["error"] > 0) { echo "錯誤: " . $_FILES["file"]["error"] . "<br />"; } else { $dlog["name"]=$_FILES["file"]["name"]; $dlogs=$dlog; //echo urldecode(json_encode($dlogs)); $name =$_FILES["file"]["name"]; echo '上傳成功!'; echo $name; //插入數(shù)據(jù)到數(shù)據(jù)庫 $strsql = "insert into name (fileName) values('$name')"; //mysql_query() 函數(shù)執(zhí)行一條 MySQL 查詢。SELECT,SHOW,EXPLAIN 或 DESCRIBE 都需要用這個函數(shù)執(zhí)行 $result = @mysql_query($strsql); // echo "文件名: " . $_FILES["file"]["name"] . "<br />"; // echo "類型: " . $_FILES["file"]["type"] . "<br />"; // echo "大小: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; } if (file_exists("upload/" . $_FILES["file"]["name"])) { // echo $_FILES["file"]["name"] . " 文件已經(jīng)存在. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); // echo "文件已經(jīng)被存儲到: " . "upload/" . $_FILES["file"]["name"]; } ?>
登錄后復(fù)制
4.在微信小程序創(chuàng)建一個頁面,里面使用web-view達到上傳文件的目的;
web.wxml文件
<!--pages/web/web.wxml--> <web-view src='https://dwb.lynncain.cn/H5/'></web-view>
登錄后復(fù)制
注:微信小程序web-view標(biāo)簽使用如上,無需多余代碼。
本文詳解了關(guān)于微信小程序上傳word、txt、Excel、PPT等文件的內(nèi)容,更多相關(guān)內(nèi)容請關(guān)注有卡有網(wǎng)。