2014-05-16 4 views
5

원격 서버에서 업로드를 이동하려고합니다. 나는 아래의 코드를 사용하여 파일을 선택하고 파일 업로드 업로드를 클릭하지만 오류를 반환 말을 한 후 코드 : "-200"메시지 : "HTTP 오류"Plupload 오류 -200 HTTP 오류

 var uploader = new plupload.Uploader(
     { 
      runtimes : 'html4, html5, flash, silverlight', 
      browse_button : 'bt_browse', 
      container: document.getElementById('container'), 
      url : 'http://remote.com/upload.php', 
      silverlight_xap_url : 'js/Moxie.xap', 
      chunks_size: '20mb', 
      max_retries: 3, 
      filters : { 
      max_file_size : '100mb' 
     }, 
     multi_selection : true, 
     init: { 
     PostInit: function() { 
       document.getElementById('filelist').innerHTML = ''; 
       document.getElementById('bt_uploadfiles').onclick = function() { 
        uploader.start(); 
        return false; 
       }; 
     }, 
     FilesAdded: function(up, files) { 
      plupload.each(files, function(file) { 
        //build list 
    }}, 
     UploadProgress: function(up, file) { 
     $("#progressBar"+file.id).val(Math.round(file.percent)); 
      if(Math.round(file.percent)==100){ 
       $("#progressBar"+file.id).hide(); 
       $("#deleteFile" + file.id).hide(); 
      } 
     }, 
     FileUploaded: function(up, file, info) { 
      if(file!=undefined) { 
       var json = $.parseJSON(info.response); 
       if(json.error == undefined) 
        moveFile(json.result, file.name, file.id); 
      } 
     }, 
     UploadComplete: function(){ 
     }, 
     Error: function(up, err) { 
     } 
     } 
    }); 

나는이 오류를 탈출 할 수있는 일 및 잇다? 필자의 경우 FileUploaded와 UploadProgress는 전혀 맞지 않습니다. 업로드를 클릭하면 직접 오류 기능으로 이동했습니다. 그 이후로 나는 그것이 정말로 있어야하고 파일이있는 폴더를 확인한 이후로 나에게는 정말로 이상하다.

도움이 될 것입니다.

+0

해결책을 찾았습니까? 나는 또한 동일한 문제에 직면하고있다. 일부 파일은 업로드되고 일부는 크기 제한이 있음에도 불구하고 'HTTP 오류'가 발생합니다. (-200)'. –

+0

이 오류도 발생합니다. max-file-size가 6MB로 설정되어 있어도 3MB 작업에 대한 아래의 파일은 정상입니다. – dunxz

답변

0

MVC5 응용 프로그램에서 PlUpload를 사용할 때 동일한 오류가 발생했습니다. 문제는 REST 메소드를 찾을 수 없다는 것입니다. 데이터에 다중 파트를 사용하여 PlUpload하십시오. 아래 코드는 이것이 WebAPI에서 어떻게 구현 될 수 있는지 보여줍니다.

public class UploadFilesController : ApiController 
{ 

    [HttpPost] 
    [Route("UploadFiles")] 
    public async Task<HttpResponseMessage> PostFormData() 
    { 
     // Check if the request contains multipart/form-data. 
     if (!Request.Content.IsMimeMultipartContent()) 
     { 
      throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); 
     } 

     string root = HttpContext.Current.Server.MapPath("~/App_Data"); 
     var provider = new MultipartFormDataStreamProvider(root); 

     try 
     { 
      // Read the form data. 
      await Request.Content.ReadAsMultipartAsync(provider); 
      var TestId = provider.FormData.Get("TestId"); 
      var chunk = provider.FormData.Get("chunk"); 
      var chunks = provider.FormData.Get("chunks"); 
      var fileName = provider.FormData.Get("name"); 

      int chunkId = Convert.ToInt32(chunk); 
      int totalChunks = Convert.ToInt32(chunks); 
      Boolean isLastChunch = chunkId == totalChunks - 1; 


      foreach (MultipartFileData file in provider.FileData) 
      { 
       //Console.WriteLine(file.Headers.ContentDisposition.FileName); 
       //Console.WriteLine("Server file path: " + file.LocalFileName); 
       string FileDestination = Path.GetDirectoryName(file.LocalFileName) + @"\" + fileName; 

       using (FileStream fileUpload = new FileStream(file.LocalFileName, FileMode.Open)) 
       { 
        using (var fs = new FileStream(FileDestination, chunkId == 0 ? FileMode.Create : FileMode.Append)) 
        { 
         var buffer = new byte[fileUpload.Length]; 
         fileUpload.Read(buffer, 0, buffer.Length); 
         fs.Write(buffer, 0, buffer.Length); 
        } 
       } 
       File.Delete(file.LocalFileName); 
      } 

      if (isLastChunch) { 
       // Do something with the completed file 
      } 

      return Request.CreateResponse(HttpStatusCode.OK); 
     } 
     catch (System.Exception e) 
     { 
      return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e); 
     } 

    }