2016-09-05 4 views
0

私は次のJSコードを持っています。この関数はファイルを受け取り、サーバーに保存するWEBAPIサービスを呼び出します。404ネットで大きなファイルを投稿した後

.onfailを確認してください、

ファイルサイズは、私はこのコードを持っているウェブAPIコントローラ上の500メガバイト

function GuardarOrigen() { 
     var NombreOrigen = $("#Nombre").val() 
     if (NombreOrigen == '') { 
      info('Debe ingresar un nombre'); 
      return; 
     } 
     var rgx = new RegExp("^[a-zA-Z0-9]+$"); 

     if (!rgx.test(NombreOrigen)) { 
      info('El nombre no debe tener espacios en blanco ni caracteres especiales.'); 
      return; 
     } 
     var files = $('#Archivo').get(0).files; 

     if (files.length > 0) { 
      if (window.FormData !== undefined) { 
       var data = new FormData(); 
       for (var x = 0; x < files.length; x++) { 
        data.append("file" + x, files[x]); 
       } 



       $("#bntGuardar").prop('disabled', true); 
       $("#imgLoader").show(); 
       $.ajax({ 
        url: urlCrearOrigen + '?NombreOrigen=' + NombreOrigen, 
        method: "POST", 
        contentType: false, 
        processData: false, 
        data: data, 
        success: function (result) { 
         info("Guardado con éxito."); 
         window.location.href = urlEditarOrigen + result 
        }, 
       }).fail(function (jqXHR, textStatus) { 
        info("Error guardando el origen"); 

        console.log('Error:' + jqXHR.responseText + textStatus); 

       }).always(function() { 
        $("#imgLoader").hide(); 
        $("#bntGuardar").prop('disabled', false); 


       }); 
      } 
     } else { 
      info('Debe seleccionar el archivo'); 
     } 

    } 

です:私は取得10または15分後

[HttpPost] 
     [Route("/CrearOrigen")] 
     public async System.Threading.Tasks.Task<HttpResponseMessage> CrearOrigen(string NombreOrigen) 
     { 

      if (!Request.Content.IsMimeMultipartContent()) 
      { 
       return this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "No se recibieron archivos"); 

      } 

      string root = HttpContext.Current.Server.MapPath("~/App_Data/CargaOrigenes"); 
      if (!Directory.Exists(root)) 
      { 
       Directory.CreateDirectory(root); 
      } 
      var provider = new MultipartFormDataStreamProvider(root); 
      await Request.Content.ReadAsMultipartAsync(provider); 
      if (provider.FileData.Count == 0) 
      { 
       return this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Parámetros invalidos - sin archivo"); 
      } 

      string FileName = provider.FileData[0].LocalFileName; 
      string[] FileParts = provider.FileData[0].LocalFileName.Split(Convert.ToChar(".")); 
      string FileExt = String.Empty; 
      if (provider.FileData[0].Headers.ContentDisposition.FileName.Contains(".csv")) 
      { 
       FileExt = "csv"; 
      } 
      else 
      { 
       return this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Archivo no soportado"); 
      } 

      try 
      { 

       CargasMasivasManager cmm = new CargasMasivasManager(); 
       int idOrigen = cmm.CrearOrigen(FileName, FileExt, NombreOrigen); 

       return this.Request.CreateResponse(HttpStatusCode.OK, idOrigen.ToString()); 
      } 
      catch (Exception e) 
      { 
       return this.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e.Message); 
      } 

     } 

404、探しているリソースがサーバー上にないか、使用できません。

しかし、ファイルが小さくなるとプロセスは正常に動作します。

また、これはローカルで動作しますが、1台のサーバーにデプロイするとエラーが発生し、そこでVisual Studioをインストールできないため、サーバーでデバッグできません。

+0

MVC web.configを更新して、50MBのファイルを許可していることを確認しましたか? – Canvas

+0

nop、編集する必要がある部分を貼り付けてください。 –

+0

また、小さなファイルをアップロードしたら、サーバ上で見つけることができますか? – Canvas

答えて

1

大きなファイルを許可するようにweb.configファイルを更新してみ

<configuration> 
    <system.web> 
    <httpRuntime maxRequestLength="xyz" /> 
    </system.web> 
</configuration> 

xyzがKBであるので、2048キロバイト= 2メガバイト So 500mb = 512000kb

関連する問題