微信小程序 图片上传+php后台源码
微信小程序 图片上传+php后台源码
微信小程序图片上传,权限控制
刚好做到了这个功能,苦恼了两天错误原因是mkdir(): Permission denied,研究了好久才发现是最简单的错误,php端的代码存放图片文件的路径得从根目录开始写。
微信小程序端的代码就不说了, 文档里都写的很详细,直接贴一下代码。
upLoadImg:function(){var that = this;var tempFilePath = that.data.filepath;var uptime = Date.parse(new Date()); for(var i = 0;i<tempFilePath.length;i++){wx.uploadFile({url: 'https://www.************.cn/BookStoreProject/public/store.php/Index/upLoadImg',filePath: tempFilePath[i] + '',name: 'file',header: {"Content-Type": "multipart/form-data"},formData: {"openid":app.globalData.openid,"uptime":uptime,},success: function (res) {console.log("图片传输成功" + JSON.stringify(res.data));// 成功上传之后,删除后面的延迟函数,调用 toast函数},fail: function (res) {console.log("图片传输失败" + JSON.stringify(res));},complete: function (res) {console.log("图片传输结束" + JSON.stringify(res));},})}},
formData里面是我自己要传输的数据,可以不用理会不要误导,其他的每个人都差不多。
然后是php端的代码:
//上传图片到服务器
public function upLoadImg(Request $request){$file = request()->file('file');if ($file) {$info = $file->move('/data/wwwroot/www.**********.cn/BookStoreProject/public/uploads/');if ($info) {$file = $info->getSaveName();$res = ['errCode'=>0,'errMsg'=>'图片上传成功','file'=>$file];return json($res);}}
}
$info = $file->move(’/data/wwwroot/www.**********.cn/BookStoreProject/public/uploads/’);
这个是服务器端存放图片的地址。注意要写的比较详细吧,要写简单我也没去深究,反正多写点总不会出错。
一开始我有看了其他朋友的博客什么的,他们写的是public/uploads,所以我也无脑也这样写。卡了我两天。啪啪啪
然后就是要注意要把这个uploads文件夹设置可写的权限。
两种方式
①如果有winSCP之类的工具,可以直接找到那个文件夹右键属性更改权限。安全性需求不是很高的话,就直接全部勾上就好了。(相关域名我打码了0)
②如果没有类似工具链接服务器的话,比如腾讯云,阿里云的服务器,可以直接登录,进入webshell
登录之后,在webshell直接加一段代码
chmod -R 777 /data/wwwroot/www.********.cn/BookStoreProject/public/uploads/
域名我用*号代替了。
然后这样写了之后,权限问题应该也就解决了。
上一张结果图吧,这个是我通过winSCP看到了服务端情况,已经有图片上传上去了。
改变图片名字和文件名更改等,之后做到再更新吧,目前就些需求。