微信小程序實現上傳word、txt、Excel、PPT等文件功能
正文:
目前小程序沒有能實現此功能的 API 所以我這里通過使用 web-view 實現;
實現流程:
1. 在小程序后臺配置業(yè)務域名
2. 在服務器寫一個html,實現表單上傳文件
3.后端php接收文件并存到一個服務器文件夾,把文件名存到數據庫以后檢索用
4.在微信小程序創(chuàng)建一個頁面,里面使用web-view達到上傳文件的目的;
效果圖:
具體實現:
1. 在小程序后臺配置業(yè)務域名
2. 在服務器寫一個html,實現表單上傳文件
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標簽隱藏掉 --> <script type="text/javascript"> function upload() { $("#form1").submit(); var t = setInterval(function() { //獲取iframe標簽里body元素里的文字。即服務器響應過來的"上傳成功"或"上傳失敗" var word = $("iframe[name='frame1']").contents().find("body").text(); if(word != "") { // alert(word); //彈窗提示是否上傳成功 // clearInterval(t); //清除定時器 } }, 1000); } </script> </body> </html>
3.后端php接收文件并存到一個服務器文件夾,把文件名存到數據庫以后檢索用
up_file.php 文件:
<?php header("Content-Type:text/html;charset=utf8"); header("Access-Control-Allow-Origin: *"); //解決跨域 header('Access-Control-Allow-Methods:POST');// 響應類型 header('Access-Control-Allow-Headers:*'); // 響應頭設置 $link=mysql_connect("localhost","root","root"); mysql_select_db("new_test", $link); //選擇數據庫 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; //插入數據到數據庫 $strsql = "insert into name (fileName) values('$name')"; //mysql_query() 函數執(zhí)行一條 MySQL 查詢。SELECT,SHOW,EXPLAIN 或 DESCRIBE 都需要用這個函數執(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"] . " 文件已經存在. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); // echo "文件已經被存儲到: " . "upload/" . $_FILES["file"]["name"]; } ?>
4.在微信小程序創(chuàng)建一個頁面,里面使用web-view達到上傳文件的目的;
web.wxml文件
<!--pages/web/web.wxml--> <web-view src='https://dwb.lynncain.cn/H5/'></web-view>
注:微信小程序web-view標簽使用如上,無需多余代碼。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
JS與Jquery獲取屏幕、瀏覽器、頁面的寬度和高度對比整理
頁面的展示,從外到內的容器為:屏幕、瀏覽器以及頁面本身。HTML元素展現在頁面內,頁面展現在瀏覽器內,而瀏覽器展現在屏幕內。通過Js的一些對象可以獲取這些容器的高度、寬度。容器的尺寸是指當前分辨率下的高度和寬度(分辨率不同,值就不相同)。2023-02-02