我想知道为什么我无法使用 $.post() 方法在 JQuery 中上传文件?
有什么方法可以调整请求来处理这个问题吗?
$.post(url, { file: fileName, path: "/uploads" }, function (result) {});
最佳答案
I am wondering why i can't upload a file in JQuery using the $.post() method?
这是因为为了上传文件,您需要使用 multipart/form-data
协议(protocol)意味着请求正文需要以与 jQuery 使用的标准形式 POST 完全不同的方式呈现: application/x-www-form-urlencoded
(在 POST
正文中用 & 分隔的键/值对)。更不用说为了在请求中写入文件内容,您需要访问文件内容,正如您所知,在 javascript 中根本不是这样的。
但不要失去所有希望。 future ,与XmlHttpRequest2和 HTML5,您将能够使用 AJAX 上传文件。
在这个 future 到来之前(顺便说一句,一旦我们摆脱了 IE<=9,这应该不会那么遥远)坚持使用现在存在的东西:检测浏览器功能并使用 XHR2 的文件上传插件如果浏览器支持它以及其他一些技术(例如隐藏的 iframe 或 Flash,如果不支持),并减轻您自己手动执行此操作的负担。
所以,继续吧,Google,制定一个愿望 list :
然后继续尝试演示,阅读文档,选择适合您需求的一个,并尝试将其在您的网站中付诸实践。如果您遇到一些具体问题,请随时询问。
但不幸的是,今天不能使用 $.post
上传文件。
关于javascript - 普通的 $.post() 传递字符串和传递文件有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11691355/