ASP.NET을 사용하여 대형 파일을 업로드하고 업로드 할 때 부정확 한 진행률 표시 줄?
-
19-09-2019 - |
문제
ASP.NET 웹 응용 프로그램 (WebForms 사용)이 있고 사용 중입니다. 업로드 큰 파일 업로드를 처리합니다. 파일을 httphandler에 게시하여 수행됩니다.
코드의 예 (데모 목적으로 단순화 됨) :
$(".uploadify").uploadify({
'uploader': '/uploadify/uploadify.swf',
'script': 'SaveUploadedFile.ashx',
'cancelImg': '/uploadify/cancel.png',
'queueID': 'fileQueue',
'auto': true,
'multi': false,
'method': 'post',
onSelect: function(e, queueId, file) {
alert(file.name + " selected");
},
onComplete: function(e, queueId, file, response, data) {
alert("complete: " + response);
},
onCancel: function(e, queueId, file, data) {
alert("cancel");
}
});
파일을받는 httphandler는 매우 간단합니다.
public void ProcessRequest(HttpContext context)
{
Debug.WriteLine("Save file");
if (context.Request.Files.Count == 0)
throw new SystemException("No files uploaded");
// Get the file
HttpPostedFile file = context.Request.Files.Get(0);
Debug.WriteLine("Got file: " + file.FileName + ", Length: " + file.ContentLength);
// Save it
string guid = Guid.NewGuid().ToString();
string path = Path.Combine(Path.GetTempPath(), guid + ".tmp");
file.SaveAs(path);
Debug.WriteLine("Saved to path: " + path);
// Update response and return guid
context.Response.StatusCode = 200;
context.Response.Write(guid);
Debug.WriteLine("All Done");
}
문제는 표시되는 진행률 표시 줄이 실제로 업로드의 진행 상황을 반영하지 않으며 파일이 실제로 업로드되기 오래 전에 업로드가 완료된 것으로 표시한다는 것입니다. 따라서 사용자 인터페이스는 파일이 완료 될 때까지 진행률 표시 줄이 100%로 유지되는 동안 아무것도하지 않는 것처럼 효과적으로 나타납니다.
경우에 따라 파일이 저장 되었음에도 불구하고 httphandler의 응답이 운송 중에 손실되는 것처럼, oncomplete 이벤트가 시작되지 않으면 서 업로드가 100%에 도달 한 후에는 단순히 실패합니다.
나는 둘 다 시도했다 Flajaxian 그리고 swfupload, 진행 막대가 실제 업로드 진행과 완전히 동기화되지 않은 것과 비슷한 문제를 경험했으며 업로드가 실제로 완료되기 전에 완료를 잘 나타냅니다.
이 문제는 로컬로 테스트 할 때 또는 작은 파일 (일반적으로 몇 메가 바이트 미만)으로 상당히 빠르게 업로드하는 경향이 있으며 업로드되는 파일과 진행률 표시 줄 사이에 지연이 거의 없거나 전혀 없기 때문에이 문제는 분명하지 않습니다.
ASP.NET 웹 애플리케이션과 함께 Flash Upload 솔루션 (예 : Uploadify)을 사용하는 방법이 있습니까? 업로드의 실제 진행 상황을 더 잘 표현할 수 있습니까?
업데이트: 결국, 나는 플래시 기반 업 로더를 사용하여 너무 어색해 보였기 때문에, 특히 업로드의 실제 진행 상황을 나타내지 않았기 때문에 Flash 기반 업 로더를 사용하려고 노력했습니다. 이것을 대체했습니다 Brettle Neatupload 대신 훨씬 더 잘 작동합니다.
해결책
이는 안티 바이러스 소프트웨어 (특히 AVG)와 업로드 프록시 또는 방화벽에서 문제가 될 수 있습니다. 관련 문제는 다음과 같습니다.
다른 팁
당신의 문제는 일반적인 문제인 것 같습니다. 나는 줄 것이다 http://www.swfupload.org/ 시도.