http - PHP PUT方式传文件的话,如何获取文件内容呢 ?

php中文网
发布: 2016-10-11 14:23:32
原创
1325人浏览过

最近因为在做前后端分离,后端PHP所有Api都使用RESTFul风格。

但是在使用put上传文件的时候,发现$_files没有文件信息(可能没有上传临时文件,待验证),使用post是可以的,并且put标准输入流获取过来的数据,读取出来是下面这种格式(上面我猜测没有上传临时文件,是因为看标准输入流里面存着文件信息),需要另外解析。

<code>#获取到的输入流内容

------WebKitFormBoundarybzEhWNCqbo9qKZBX
Content-Disposition: form-data; name="upload"; filename="一些不错的职位.md"
Content-Type: text/markdown

xxxx
xxxx
xxxx

------WebKitFormBoundarybzEhWNCqbo9qKZBX--</code>
登录后复制

目前我的思路是两个:

  1. 如果上传临时文件(这个正在测试...): 如果上传了,可以读临时文件。

  2. 如果不上传临时文件:尝试解析这串form-data传过来的参数,但我不知道这种格式php有没有对应方法进行解析。

    巧文书
    巧文书

    巧文书是一款AI写标书、AI写方案的产品。通过自研的先进AI大模型,精准解析招标文件,智能生成投标内容。

    巧文书 61
    查看详情 巧文书

顺带吐槽下,RESTFul用起来经常会有问题:

  1. 在跨域的时候,普通的form表单(GET, POST)没问题,但是使用PUT,DELETE的话,需要设置跨域头。
    PS:不明白,为什么需要?

    立即学习PHP免费学习笔记(深入)”;

  2. MDN HTTP Method文档竟然没有PUTDELETE的详细介绍...

  3. PHP获取PUTDELETE需要到file_get_contents('php://input');获取参数信息,没有类似$_PUT,$_DELETE的全局变量。

============= [ 22:01 ] ===================

stackoverflow逛了下,发现不少碰到相同问题的,暂时没看到比较好的解决方案。

补充下,这篇文章jquery ajax put file, php save file,博主和我碰到了一样的问题,不过他是通过用正则来解析处理数据的。

我在想,有没有比较好的方案,能够模仿PHP处理POST请求一样,把form-data串,解析出来,普通参数,存到$_PUT($_POST), 文件传到临时目录,然后返回文件信息到$_FILES.

============ [ 10-10 10:16 ] ===================

这片博文如何使用multipart/form-data格式上传文件,有讲到form-data的格式。

目前先自己简单写一个解析form-datacomposer组件。

回复内容:

最近因为在做前后端分离,后端PHP所有Api都使用RESTFul风格。

但是在使用put上传文件的时候,发现$_files没有文件信息(可能没有上传临时文件,待验证),使用post是可以的,并且put标准输入流获取过来的数据,读取出来是下面这种格式(上面我猜测没有上传临时文件,是因为看标准输入流里面存着文件信息),需要另外解析。

<code>#获取到的输入流内容

------WebKitFormBoundarybzEhWNCqbo9qKZBX
Content-Disposition: form-data; name="upload"; filename="一些不错的职位.md"
Content-Type: text/markdown

xxxx
xxxx
xxxx

------WebKitFormBoundarybzEhWNCqbo9qKZBX--</code>
登录后复制

目前我的思路是两个:

  1. 如果上传临时文件(这个正在测试...): 如果上传了,可以读临时文件。

  2. 如果不上传临时文件:尝试解析这串form-data传过来的参数,但我不知道这种格式php有没有对应方法进行解析。

顺带吐槽下,RESTFul用起来经常会有问题:

  1. 在跨域的时候,普通的form表单(GET, POST)没问题,但是使用PUT,DELETE的话,需要设置跨域头。
    PS:不明白,为什么需要?

    立即学习PHP免费学习笔记(深入)”;

  2. MDN HTTP Method文档竟然没有PUTDELETE的详细介绍...

  3. PHP获取PUTDELETE需要到file_get_contents('php://input');获取参数信息,没有类似$_PUT,$_DELETE的全局变量。

============= [ 22:01 ] ===================

stackoverflow逛了下,发现不少碰到相同问题的,暂时没看到比较好的解决方案。

补充下,这篇文章jquery ajax put file, php save file,博主和我碰到了一样的问题,不过他是通过用正则来解析处理数据的。

我在想,有没有比较好的方案,能够模仿PHP处理POST请求一样,把form-data串,解析出来,普通参数,存到$_PUT($_POST), 文件传到临时目录,然后返回文件信息到$_FILES.

============ [ 10-10 10:16 ] ===================

这片博文如何使用multipart/form-data格式上传文件,有讲到form-data的格式。

目前先自己简单写一个解析form-datacomposer组件。

PHP的全局变量$_FILES只能获取post方式上传的文件,若你要使用put 来上传文件,你必须自己处理该stream

手机端来说,目前的主流是 get+post+json

4,标准的form data上传格式

php put需要单独解析,另put一般用于接受json格式的数据

谢谢回答,另外,问题重新编辑了下, :)

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号