回答
您需要将Content-type
请求头设置为multipart/form-data
和玩的纯醇”的JavaScript(TM)格式的一点,I wrote this但你可以很容易地返工为图书馆:
编辑:有我咖啡了,所以修改了它的jQuery(无库版本here):
// Define a boundary, I stole this from IE but you can use any string AFAIK
var boundary = "---------------------------7da24f2e50046";
var body = '--' + boundary + '\r\n'
// Parameter name is "file" and local filename is "temp.txt"
+ 'Content-Disposition: form-data; name="file";'
+ 'filename="temp.txt"\r\n'
// Add the file's mime-type
+ 'Content-type: plain/text\r\n\r\n'
// Add your data:
+ data + '\r\n'
+ '--'+ boundary + '--';
$.ajax({
contentType: "multipart/form-data; boundary="+boundary,
data: body,
type: "POST",
url: "http://asite.com/apage.php",
success: function (data, status) {
}
});
嗯,真好!不知道这在Ajax请求中是可能的。 – 2010-06-10 08:00:39
@Pekka:好的。如果您无法控制要上传的服务器,并且必须接受使用多部分/表单数据发布的文本文件,方便使用。 – 2010-06-10 08:16:27
这有效,除了使用express/node进行两次调整外:1)最后一个边界需要是'+' - '+ boundary +' - ';'并且ajax调用中的contentType必须是:'' “multipart/form-data; boundary =”+ boundary' – chovy 2013-01-24 23:35:19
这里是如何做到这一点,而无需手动建立多部分请求主体:
var s = 'some string data';
var filename = 'foobar.txt';
var formData = new FormData();
formData.append('file', new File([new Blob([s])], filename));
formData.append('another-form-field', 'some value');
$.ajax({
url: '/upload',
data: formData,
processData: false,
contentType: false,
type: 'POST',
success: function() {
console.log('ok');
},
error: function() {
console.log('err'); // replace with proper error handling
}
});
似乎很好...我可以将Base64转码为文件对象吗?如果没有,我可以使用base64并在服务器上解码它。但我只是好奇 – redestructa 2016-09-06 08:53:02
FormData对象跨浏览器兼容? – 2016-10-05 04:41:14
- 1. Jquery或JS:如何检查字符串上的无效字符?
- 2. 如何对字符串上的其他字符执行操作?
- 3. 将字符串转换为XML文档与jquery或其他方式
- 4. 如何区分jQuery选择器字符串与其他字符串
- 5. 使用nsIZipWriter或其他将字符串压缩为字符串?
- 6. 与string.replace(或其他字符串修改)不工作
- 7. 如何将字符串文字用作其他左值?
- 8. 文件上传与其他客户端
- 9. 金字塔AuthTktAuthenticationPolicy与其他框架
- 10. 将字符串作为标签或其他值传递给按钮
- 11. 将字符串作为文本文件上传到SkyDrive?
- 12. 执行字符串作为JS或Jquery的
- 13. PHP判断字符串作为一个人的名字或其他文本
- 14. jquery:如何将其他.js文件包含到.js中
- 15. 如何创建框架与其他框架和库依赖?
- 16. 上传其他文件
- 17. 如何在其他文本框与条件的jquery
- 18. 如何在NearlyFreeSpeech上设置Sinatra或其他Ruby框架
- 19. 从其他位置获取实体框架连接字符串?
- 20. MVC实体框架连接字符串引用其他项目
- 21. 如何匹配两个其他已知字符串之间的字符串,而没有其他字符与REGEX?
- 22. 如何将字符串传递给ofstream :: open作为文件名
- 23. 如何使用js或JQuery将invisible false设置为字符串的字符
- 24. Lua string.len,string.lower或任何其他字符串函数不工作
- 25. 上传一个字符串作为文件
- 26. 追加字符串作为文件上传使用FormData
- 27. 如何使用Ajax文件上传与其他输入?
- 28. 如何与其他数据同时上传文件
- 29. jQuery多文件上传(mfupload.js)不工作在框架
- 30. 如何将UI组件导出为字符串或其他东西
请澄清一下:你是否有文件路径作为字符串,或者你有文件内容作为字符串,你想它作为文件上传? – 2010-06-10 07:54:20
@Marko:它看起来像他有一个字符串中的文件内容,他从ajax请求中获得。 – 2010-06-10 08:01:24