0

我有web page一个video file/blobusing usingFormData方法POSTXMLHttpRequest. 我想从in 调用函数中将响应作为字符串返回。Posted URL即在成功上传文件后,我想将字符串返回给调用者。

索引.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在上面的代码中,文件是在指定位置创建的,一切正常。我知道这在事件中是不可能的。请建议文件上传后发送响应文本/字符串的正确方法。

帮助赞赏。

4

1 回答 1

1

这是一个关于如何使用vb.net使用jquery.ajax定位aspx内部特定函数的拼凑示例。可悲的是我不流利的C#

请注意,如果您使用的是旧版本的 .net(两个或更低版本),则必须添加web.configSystem.Web.Extensions以使其工作。视IIS为 as或 as 。httpModulesmodules

AJAX.aspx

<WebMethod(EnableSession:=True)> _
Public Shared Function abc(def As String) As Boolean
    ''REM: Do stuff
    Return True
End Function

使用 jquery 调用 xhr

$.ajax({
    type: "POST",
    url: "AJAX.aspx/abc",
    data: "{'def':'test'}",
    contentType: "application/json; charset=utf-8",
    dataType: "text",
    success: function(response){...},
    error: function(jqXHR, textStatus, errorThrown){...}
});

然而,我仍然建议使用通用处理程序,如这里所示。它更干净、更纤薄,并且可以更好地控制您实际想要做的事情。System.Web.Extensions也不是必需的。

于 2020-07-16T08:27:12.317 回答