如果前台上传的是BLOB二进制图片,由tp6组成的后台来接收时,报错:“failed to open stream: Permission denied”。
经分析知,tp6的上传类的内核中,用$file->extension()获取上传文件的扩展名。而前台上传的BLOB对象,BLOB对象的属性只有两个: size、type,size是图片的大小单位是字节,type指图片的minemine类型,如image/jpeg,其中不存在带有扩展名jpg的源文件名,所以,tp6的上传类的内核中,用$file->extension()获取上传文件的扩展名为空值,从而报错。下面接着改……。
第一种方法,如ghj902260所说,不用tp6的上传类接收,自己写一个接收方法,file_get_contents接收blob二进制图片,再用file_put_contents保存到后台即可。
第二种方法,后台仍然用tp6的上传类接收,就要改前台发送的数据,即先把blob类型转为File类型,再发送到后台。具体做法如下:
[code]
/**
* 前台
* @param {Blob} blobObj [Blob对象]
*/
// Blob对象类型转File对象类型,new Date().getTime() + '.png' 生成的文件名
var file = new File([blobObj], new Date().getTime() + '.png',{type:blobObj.type});
// 用formData格式发送
var formData = new FormDa