0

我想知道为什么我不能使用 $.post() 方法在 JQuery 中上传文件?

有没有办法调整请求以处理这个问题?

$.post(url, { file: fileName, path: "/uploads" }, function (result) {});
4

1 回答 1

5

我想知道为什么我不能使用 $.post() 方法在 JQuery 中上传文件?

这是因为为了上传文件,您需要使用multipart/form-data协议,这意味着请求正文需要以与 jQuery 使用的标准形式 POST 完全不同的方式呈现:(在正文application/x-www-form-urlencoded中由 & 分隔的键/值对) POST. 更不用说为了在请求中写入文件内容,您需要访问文件内容,正如您所知,在 javascript 中根本不是这种情况。

但不要失去所有的希望。将来,通过XmlHttpRequest2和 HTML5,您将能够使用 AJAX 上传文件。

直到这个未来到来(顺便说一下,一旦我们摆脱了 IE<=9,它不应该那么遥远)坚持今天存在的东西:文件上传插件,检测浏览器功能,如果浏览器使用 XHR2支持它和其他一些技术(例如隐藏的 iframe 或 Flash,如果它不支持),并减轻您自己手动执行此操作的负担。

所以继续吧,谷歌,做一个愿望清单:

然后继续玩演示,阅读文档,选择一个适合您的需求并尝试在您的站点中将其付诸实践。如果您遇到一些具体问题,请不要犹豫。

但不幸的$.post是,今天不能上传文件。

于 2012-07-27T15:52:46.760 回答