barra de progreso es adecuado cuando la posibilidad de subir archivos de gran tamaño utilizando ASP.NET y Uploadify?

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

Pregunta

Tengo una aplicación web ASP.NET (la utilización de formularios Web) y estoy usando Uploadify para manejar la carga archivos de gran tamaño. Esto se hace mediante la publicación del archivo a un HttpHandler.

Ejemplo de código (simplificado para fines de demostración):

$(".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");
    }
});

El HttpHandler que recibe el archivo es bastante simple:

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");
}

El problema es que la barra de progreso se muestra en realidad no reflejar el progreso de la carga, y muestra la carga de ser completa mucho antes de que el archivo está subido en realidad. Por lo tanto, la interfaz de usuario aparece efectivamente como lo está haciendo nada, mientras que la barra de progreso se queda en 100%, hasta que el archivo se haya completado.

En algunos casos, la carga simplemente falla después de alcanzar el 100%, con el evento OnComplete no ser despedido, casi como la respuesta de la HttpHandler es perderse en tránsito, a pesar de que el archivo se guarda.

He intentado tanto Flajaxian y SWFUpload , y experimentó problemas similares con la barra de progreso estar completamente fuera de sintonía con los avances reales de carga, que indica la finalización mucho antes de la carga era en realidad completa.

Este problema no es evidente cuando se prueba de forma local, o con archivos pequeños (típicamente bajo unos pocos megabytes) ya que estos tienden a subir con bastante rapidez y hay poco o ningún retraso entre el archivo que se cargan y la barra de progreso de completar.

¿Hay alguna manera de utilizar una solución de carga de Flash (como Uploadify) con una aplicación Web ASP.NET y tienen la barra de progreso representan mejor el progreso real de la subida?

Actualización: Con el tiempo, me di por vencido tratando de utilizar un cargador basado en Flash, ya que parecía un poco demasiado incómoda, sobre todo la barra de progreso, que no representan el progreso real de la carga en absoluto . Reemplazado esto con Brettle NeatUpload lugar que funciona mucho mejor.

¿Fue útil?

Solución

Esto podría ser un problema con su software anti-virus (en concreto AVG) y su proxy de carga o firewall. He aquí una cuestión relacionada:

Cada cargador de flash dando valores de progreso malas

Otros consejos

Su problema parece ser muy común. Daría http://www.swfupload.org/ intentarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top