微信小程序图片上传,权限控制
刚好做到了这个功能,苦恼了两天错误原因是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看到了服务端情况,已经有图片上传上去了。
改变图片名字和文件名更改等,之后做到再更新吧,目前就些需求。