canvas使用Ajax上传图片PHP,使用Ajax和PHP $_FILES从Canvas元素发送图像

我需要能够将图像和一些表单字段从客户端canvas元素发送到

PHP脚本,最后是$_POST和$_FILES.当我这样发送时:

var img = canvas.toDataURL("image/png");

...

ajax.setRequestHeader('Content-Type', "multipart/form-data; boundary=" + boundary_str);

var request_body = boundary + '\n'

+ 'Content-Disposition: form-data; name="formfield"' + '\n'

+ '\n'

+ formfield + '\n'

+ '\n'

+ boundary + '\n'

+ 'Content-Disposition: form-data; name="async-upload"; filename="'

+ "ajax_test64_2.png" + '"' + '\n'

+ 'Content-Type: image/png' + '\n'

+ '\n'

+ img

+ '\n'

+ boundary;

ajax.send(request_body);

$_POST和$_FILES都回填了,但$_FILES中的图像数据仍然需要解码如下:

$loc = $_FILES['async-upload']['tmp_name'];

$file = fopen($loc, 'rb');

$contents = fread($file, filesize($loc));

fclose($file);

$filteredData=substr($contents, strpos($contents, ",")+1);

$unencodedData=base64_decode($filteredData);

…为了将其保存为可读的PNG.这不是一个选项,因为我试图将图像传递给Wordpress的media_handle_upload()函数,该函数需要指向$_FILES的索引指向可读图像.我也无法相应地解码,保存和更改’tmp_name’,因为它违反了安全检查.

img_split = img.split(",",2)[1];

img_decoded = Base64.decode( img_split );

但由于某些原因,当它到达PHP时,我仍然没有一个可读的文件.

所以问题是:“为什么?”或者“我做错了什么?”或者“这有可能吗?” 🙂

非常感谢任何帮助!

谢谢,

凯恩

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值