【发布时间】:2020-07-16 07:51:50
【问题描述】:
我有一个web page,它使用FormData 使用POST 方法和XMLHttpRequest 将video file/blob 发送到另一个网页。我想在调用函数中从Posted URL 以字符串形式返回响应。即成功上传文件后,我想将字符串返回给调用者。
index.aspx:
function SendFile(blob)
{
var file = new File([blob], "testfile123.webm");
var oData = new FormData();
oData.append("file", file,"testfile.webm");
var oReq = new XMLHttpRequest();
oReq.open("POST", "upload.aspx", true);
oReq.onload = function (oEvent)
{
if (oReq.status == 200)
{
alert("Uploaded"+oReq.responseText);
}
else {
alert("Error");
}
};
oReq.send(oData);
}
上传.aspx:
protected void Page_Load(object sender, EventArgs e)
{
string folderPath = GetUploadFolderPath();
string filename = DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss") + ".webm";
HttpFileCollection fileCollection = Request.Files;
for (int i = 0; i < fileCollection.Count; i++)
{
HttpPostedFile postedFile = fileCollection[i];
var filePath = folderPath + filename; //postedFile.FileName;
postedFile.SaveAs(filePath);
}
}
在上面的代码中,文件是在指定位置创建的,一切正常。我知道这在Page_Load 事件中是不可能的。请建议文件上传后发送响应文本/字符串的正确方法。
帮助表示赞赏。
【问题讨论】:
-
这里不是真正的问题,但我建议使用通用处理程序 ashx 进行数据传输,而不是 aspx。通常不需要完整的生命周期(初始化、加载、渲染、预渲染、onerror)和 aspx 为文件上传提供的网络表单。 SO上有例子
-
只是在这里猜测,但它不只是像
Response.Write("some response");这样的东西吗? -
@Lain Request.Files 在静态方法中不可访问。 :( 我也需要作为文本/字符串的响应,并且不想使用 Response.Write 编写响应
标签: javascript asp.net xmlhttprequest httpresponse postfile