【发布时间】:2015-09-10 20:38:04
【问题描述】:
我亲爱的同事们,
我有以下场景
- 某些应用通过 Web 服务调用将文件上传到文件存储
- Ext JS 应用通过restful api 与Some App 连接
如果我用 curl 调用 restful 文件上传控制器,一切都很好:文件上传成功。
所用命令的模板:
curl -F "userid=1" -F "filecomment=This is a file" -F "file=@/home/user1/Desktop/test.txt;type=text/plain" localhost/uploader.php
如果我将 Ext JS 表单发布到 restful 控制器,确实会上传一个文件,但文件的内容是原始文件的完整路径而不是它的内容,例如:/home/user1/Desktop/test .txt。
在检查浏览器网络选项卡中发送的标头时,Ext JS 使用多部分内容类型发送数据。从控制器到文件存储端点的客户端出站请求头在这两种情况下都是正确的,但是,当使用 curl 时,文件内容被发布,而 Ext JS 发布文件名本身。
通过非 ext js 上传,普通的旧 html 表单也可以正常工作!因此结论是,Ext JS 是罪魁祸首。
关于如何进一步调试此问题的任何建议?
【问题讨论】:
-
添加
-X POST,如果还不够,也添加-d @/home/user1/Desktop/test.txt -
抱歉,您能详细说明一下吗?我尝试将 -F 更改为 -d 并将其添加为附加参数,但它们都不起作用,curl 会发出警告说我只能选择一个请求。这应该有什么帮助?
-
我认为 @ 在引用参数时无法解析文件内容。但似乎确实如此,并且与
-d参数冲突。我写了一个替代解决方案作为答案(见下文)。
标签: extjs file-upload