ASP.NET을 사용하여 대형 파일을 업로드하고 업로드 할 때 부정확 한 진행률 표시 줄?

StackOverflow https://stackoverflow.com/questions/2239881

문제

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/ 시도.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top