使用Ajax和PHP $_FILES从Canvas元素发送图像
发布时间:2020-12-16 01:35:46 所属栏目:百科 来源:网络整理
导读:我需要能够将图像和一些表单字段从客户端canvas元素发送到 PHP脚本,最后是$_POST和$_FILES.当我这样发送时: script type="text/javascript"var img = canvas.toDataURL("image/png");...ajax.setRequestHeader('Content-Type',"multipart/form-data; bounda
我需要能够将图像和一些表单字段从客户端canvas元素发送到
PHP脚本,最后是$_POST和$_FILES.当我这样发送时:
<script type="text/javascript"> 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); </script> $_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时,我仍然没有一个可读的文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |