wx.chooseImage 从本地相册选择图片或使用相机拍照。
调用成功返回一个tempFilePaths数组 图片的本地临时文件路径列表 (本地路径)
和一个tempFiles数组 图片的本地临时文件列表
wx.chooseImage({
count:3, //设置一次最多可以选择的图片张数
sizeType: ['original', 'compressed'], //设置所选的图片的尺寸原图或压缩图
sourceType: ['album', 'camera'], //设置选择图片的来源(相册、相机)
success: res => {
const images = this.data.images.concat(res.tempFilePaths)//concat函数用来联接两个数组
// 限制最多只能留下3张照片并吧文件路径存到images
let thisimages = images.length <= 3 ? images : images.slice(0, 3)
this.setData({
images: thisimages
})
},
fail:res=>{
console.log("调用未成功", res)
}
})
将选择的图片组成一个Promise数组,准备,并行上传
const imgarr = []
let nowdate = util.getNowFormatDate("yyyyMMddhms")
let i = 0
console.log("obj2" ,obj2)
for (let path of this.data.images) {
let imgname = user_id + "-" + nowdate + "i" + i //生成图片新的文件名
i = i + 1
obj2['imgname']=imgname
imgarr.push(util.uploadimg(path, obj2)) //调用uploadimg函数上传图片返加图片地址
}
console.log("imgarr=" + imgarr)
UploadTask wx.uploadFile(Object object)
将本地资源上传到服务器。客户端发起一个 HTTPS POST 请求
function uploadimg(path, obj1) {
var p = new Promise(function(resolve, reject) {
wx.uploadFile({
url: rootDocment + "1000jaindex.php",
filePath: path, //要上传文件资源的路径 (网络路径)
name: 'imgFile', //设置文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容
formData: obj1, //HTTP 请求中其他额外的 form data
success(res) {
console.log ('图',res)
let file_scr = JSON.parse(res.data).file_scr
//成功上传后返回文件路径
resolve(file_scr);
}
})
return p;
}
PHP服务器端
通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。
第一个参数是wx.uploadimg设置的name的值’imgfile’,第二个下标可以是 “name”、“type”、“size”、“tmp_name” 或 “error”。如下所示:
$name=$_FILES["imgfile"]["name"] - 上传文件的名称
$type=$_FILES["imgfile"]["type"] - 上传文件的类型
$size=$_FILES["imgfile"]["size"] - 上传文件的大小,以字节计
$tmp_name=$_FILES["imgfile"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$error_cod=$_FILES["imgfile"]["error"] - 由文件上传导致的错误代码
这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关允许哪些用户上传文件的限制。
这个时候文件已经传至服务器并生成了临时文件$tmp_name
DIRECTORY_SEPARATOR 是PHP路径分隔符:
接下来就是生成一新完整的完整路径$photo_tmp_file_name
$photo_tmp_path=$web_root.DIRECTORY_SEPARATOR."upload".DIRECTORY_SEPARATOR."temp"; //'1000ja.cn/upload/temp'
$temp_file_name= $imgname.$ext_file_name; //'1475211539-20200219184141i0.jpg'
$photo_tmp_file_name=$photo_tmp_path.DIRECTORY_SEPARATOR.$temp_file_name; //'1000ja.cn/upload/temp/1475211539-20200219184141i0.jpg'
//$photo_tmp_file_name="upload/temp/".$temp_file_name;
$photo_tmp_file_scr="/upload/temp/".$temp_file_name; //'upload/temp/1475211539-20200219184141i0.jpg'
最后move_uploaded_file() 函数把上传的文件移动到新位置成功。
如果成功该函数返回 TRUE,如果失败则返回 FALSE。
注释:该函数仅用于通过 HTTP POST 上传的文件。
注释:如果目标文件已经存在,将会被覆盖。
move_uploaded_file ($tmp_name,$photo_tmp_file_name);
echo json_encode(array("success"=>true, 'msg'=> "ok","file_name"=>$photo_tmp_file_name,"file_scr"=>$photo_tmp_file_scr,"tmp_name"=>$tmp_name));
来源:CSDN
作者:rickcn
链接:https://blog.csdn.net/rickcn/article/details/104393487