gpt4 book ai didi

javascript - XMLHttpRequest::ERR_CONNECTION_RESET 上传大型(2 Mo 及更多)文件时

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:00:23 25 4
gpt4 key购买 nike

问题

我正在尝试使用 XMLHttpRequest 上传文件,它似乎只适用于小文件(例如小于 2MO 的大小)。到目前为止,我尝试了很多东西,并得出了帖子末尾显示的代码。但是,无事可做;我不断收到 ::ERR_CONNECTION_RESET 错误。这不是代码问题,因为 2MO 文件正在正确卸载......我忘记了什么?我知道这可能是 IIS 或 web.config 问题,但我可以通过谷歌搜索这个问题来确定它。

Chrome 给出的错误

POST WEBSITEANDSERVICEURL/Service/MyService.asmx/UploadFilesWithAJAX net::ERR_CONNECTION_RESET

  • handleFileSelect
  • x.event.dispatch
  • v.handle

Javascript

<script type="text/javascript">
$(function() {
$('#<%= files.ClientID %>').change(handleFileSelect);
});

function handleFileSelect(e) {
if (!e.target.files || !window.FileReader) return;

var fd = new FormData();
var file = document.getElementById("<%= files.ClientID %>");
for (var i = 0; i < file.files.length; i++) {
fd.append('_file', file.files[i]);
}
var xhr = new XMLHttpRequest();
xhr.open('POST', '<%= ResolveURL("~/Services/MyService.asmx/UploadFilesWithAJAX") %>', true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
};
xhr.upload.addEventListener("progress", updateProgress, false);
xhr.send(fd);
}

function updateProgress(oEvent) {
if (oEvent.lengthComputable) {
var percentComplete = oEvent.loaded / oEvent.total;
$("#progress").text(oEvent.loaded + " ON " + oEvent.total);
}
}
</script>

HTML 标记

<asp:FileUpload ID="files" runat="server" multiple="true" />
<br />
<table id="selectedFiles">
</table>
<span id="progress"></span>

我的服务.asmx

<ScriptService()> _
<ToolboxItem(False)> _
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
Public Class AJAXServices : Inherits WebService
<WebMethod(EnableSession:=True)> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Xml)> _
Public Function UploadFilesWithAJAX()
' Some code which work fine, I'm sure of it.
End Function
End Class

Web.config

<!-- [...] -->
<system.web>
<httpRuntime maxRequestLength="2097151" executionTimeout="180" /><!-- MAXIMUM DURING TESTING -->
<!-- [...] -->
</system.web>
<!-- [...] -->

最佳答案

好的,我解决了...

解决方案

如果其他人发生这种情况,请确保至少在您的 Web 服务中访问一次 Context.Request.Files

因为在我的测试中,我只是:

Public Function UploadFilesWithAJAX()
Return "RETURN SOMETHING"
End Function

但这还不够……如果我只访问 Context.Request.Files,例如:

 Public Function UploadFilesWithAJAX()
Dim files = Context.Request.Files '<---- Simply adding this... make it works :|
Return "RETURN SOMETHING"
End Function

它有效。希望它能帮助别人。

顺便说一句,如果有人可以通过这样做向我解释为什么它会起作用。

关于javascript - XMLHttpRequest::ERR_CONNECTION_RESET 上传大型(2 Mo 及更多)文件时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27428375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com