javascript - HTML5 XHR FileUpload 和 ASP.Net 的问题

标签 javascript asp.net html file-upload

我正在尝试使用 HTML5 的 XMLHttpRequest 上传文件。

这是我的代码:

var xhr = new XMLHttpRequest();
xhr.open("POST", "receive.aspx", true);
//xhr.setRequestHeader("Content-Type", "multipart/form-data");
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.send($("#fileobject").files[0]);

在服务器端,我得到 0Request.Files.Count。但是,如果我读取输入流,我会得到文件的标题,如下所示:

------WebKitFormBoundarylAWVSRo5qeSpsnzn Content-Disposition:
form-data; name="fileToUpload"; filename="a.txt" Content-Type:
application/octet-stream

Testing

------WebKitFormBoundarylAWVSRo5qeSpsnzn--

上传的文件只包含“测试”字样。

服务器代码:

Stream inputStream = Request.InputStream;
FileStream fileStream = new FileStream("c:\\test.txt", FileMode.OpenOrCreate);
inputStream.CopyTo(fileStream); 
fileStream.Close();

我的客户端 Javascript 中是否缺少任何未填充服务器上的 Request.Files 对象的内容?或者有什么方法可以只读取没有标题的文件内容?

最佳答案

您应该使用 XHR2 的 FormData API创建一个 multipart/form-data 请求主体。您可以通过 append() 方法附加每个 form-data 部分。它还接受一个 File

var formData = new FormData();
formData.append("myfile", $("#fileobject").files[0]);

var xhr = new XMLHttpRequest();
xhr.open("POST", "receive.aspx");
xhr.send(formData);

XHR2 将注意正确的 header 和请求主体编码,并且在此示例中,文件将作为 form-data 部分在服务器端可用,名称为 myfile .

关于javascript - HTML5 XHR FileUpload 和 ASP.Net 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7221262/

相关文章:

asp.net - 替代在ASP.NET上运行且不使用IIS日志的Google Analytics(分析)的替代方法?

c# - 在 C# 中将 Dataset 元素转换为字符串数组

php - 使用 PHP 在 .txt 文件中存储可自定义的测验问题和答案

javascript - Cytoscape.js 中的字体大小问题

javascript - 是否有一个 jquery 插件可以水平而不是垂直列化列表项?

javascript - 焦点不适用于文本字段

javascript - 当 jQuery 需要呈现时优化页面速度

javascript - 在 javascript MVC 框架 (Backbone.js) 中生成 PDF 报告

javascript - 仅使用 javascript/html5 获取麦克风/网络摄像头记录流

jQuery 从 div 中删除 contains() 文本