ASP.NET 웹 응용 프로그램 (WebForms 사용)이 있고 큰 파일 업로드를 처리하기 위해 Uploadify을 사용하고 있습니다. 이것은 HttpHandler에 파일을 게시하여 수행됩니다. (데모 단순화) 코드ASP.NET과 Uploadify를 사용하여 대용량 파일을 업로드 할 때 진행 막대가 정확하지 않습니까?
예 :
$(".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 두 가지 모두 시도해 보았습니다. 진행률 표시 줄이 실제 업로드 진행과 완전히 동기화되지 않아서 업로드가 실제로 완료되기 훨씬 전에 완료되었음을 나타내는 유사한 문제가 발생했습니다.
이 문제는 로컬에서 테스트하거나 작은 파일 (일반적으로 몇 메가 바이트 미만)을 사용할 때 분명하지 않습니다. 이러한 파일은 상당히 빠르게 업로드되는 경향이 있으며 업로드되는 파일과 진행률 표시 줄 사이에 지연이 거의 없거나 전혀 없습니다.
Uploadify와 같은 Flash 업로드 솔루션을 ASP.NET 웹 응용 프로그램과 함께 사용할 수 있으며 진행률 막대가 업로드의 실제 진행 상태를보다 잘 나타내도록 할 수 있습니까?
업데이트 : 결국 업로드의 실제 진행 상황을 나타내지 않는 진행률 막대와 같이 너무 어색한 것으로 보였으므로 플래시 기반 업 로더 사용을 포기했습니다. 대신 이것을 훨씬 더 잘 작동하는 Brettle NeatUpload으로 바 꾸었습니다.
가 인식 지연가 : 여기에 관련된 문제입니까? 대용량 파일 업로드의 경우 web.config에서 세션 시간 초과를 증가 시켰습니까? 하나의 옵션은 여기에 보이는 페이스 북 막대와 같이 100 % 후에 다른 진행률 표시 줄로 전환하는 것입니다. http://www.ajaxload.info/ –
@Todd - 디버그 메시지는 업로드가 완료 될 때까지 페이지가 히트되지 않음을 나타냅니다 , 문제는 모든 사후 업로드 처리와 같이 보이지 않습니다. 세션 시간 초과 및 최대 요청 크기 설정은 이미 증가했지만이 문제와 관련이없는 것 같습니다. – Mun
응용 프로그램 풀이 재활용되는 원인이 있습니까? –