用原生js提交图片到服务器,无法接受到数据?(代码及截图详见描述)

发布于 2022-09-03 15:16:13 字数 385 浏览 17 评论 0

抓包后看见的是这样的图像,name多了诸如这些东西
Content-Disposition: form-data; Content-Type: image/jpeg

clipboard.png

后台代码

$get = $_POST;
file_put_contents("./Upload/img/".time()."-avatar.txt",base64_decode($get));

结果这个txt是空的

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

断念 2022-09-10 15:16:13

js 的这些提交文件的方式对文件类型有限制,如果你把图片当做文件来传它不能解析,所以用form表单或者frame框架去做

苏大泽ㄣ 2022-09-10 15:16:13

PHP中请改用$_FILES['file']

埋葬我深情 2022-09-10 15:16:13

看日志,你的数据不是base64的,所以用 base64_decode解不出来,$get是array,不是 string。
猜测你要使用的应该是 base64_encode 转化为 base64编码,他的第一个参数应该是 string 类型。你的 $get 是array,没法转换。

应该用到下面的技术,附上官方文档:PHP_FILESmove_uploaded_file

给你你的代码,可以打印下:

$file =  $_FILES["file"];
print_r($file); //看看输出了什么

如果存在 $file['tmp_name'],用 move_uploaded_file 移到新位置即可

情徒 2022-09-10 15:16:13

遇到这种小问题不应该写个print_r($GLOBALS) 看看文件跑到哪儿去了吗? 具体要看你是通过什么方式提交图片的,原生js也可以搞出很多花样 -- 比如直接FormData会提交到$_FILES,又如用FileReader读取文件然后在自行base64编码后提交会到$_POST中...

零時差 2022-09-10 15:16:13

1.你先搞清楚,前端是否有丢过来。
2.确定是base64还是file

检查一下,是文件的话,会有数据:

var_dump($_FILE);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文