2014-12-11 6 views
0

멀티 파트 엔티티 요청을 통해 안드로이드에서 요청 데이터를 받고 있습니다. 요청을 수락하고 파일을 서버 측에 저장하는 방법 시도한 코드를 확인하십시오. 안드로이드에서 오는 파일은 비디오 파일입니다. 성공적으로 웹 서비스에 다중 데이터를 전송하는 경우멀티 파트 엔터티를 사용하여 안드로이드에서 C# asmx 웹 서비스로 대용량 파일 업로드

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public UploadFileResponse FileUpload(FileStream stream) 
    {   
     JavaScriptSerializer js = new JavaScriptSerializer(); 
     Context.Response.Clear(); 
     Context.Response.ContentType = "application/json"; 

     UploadFileResponse _response = null; 
     bool IsFileUploaded = false; 

     if (_response != null) 
     { 
      return _response; 
     } 
     else 
     { 
      _response = new UploadFileResponse(); 
     } 

     try 
     { 

      MultipartParser parser = new MultipartParser(stream); 


      if (parser.Success) 
      {    
       string fileName = parser.Filename; 
       string contentType = parser.ContentType; 
       byte[] fileContent = parser.FileContents; 
       FileStream fileToupload = new FileStream("D:\\FileUpload\\" + fileName, FileMode.Create); 
       fileToupload.Write(fileContent, 0, fileContent.Length); 
       fileToupload.Close(); 
       fileToupload.Dispose();    

       _response.Result = true; 
       _response.Message = "Success"; 

       stream.Close(); 
      } 
      else 
      { 
       _response.Result = false; 
       _response.Message = "Oops, something went wrong, please try again."; 
      } 
     } 
     catch (Exception ex) 
     { 
      _response.Result = false; 
      _response.Error = ex.Message; 
      _response.Message = "Oops, something went wrong, please try again.";    
     } 
     finally 
     { 

     } 
     return _response; 
    } 

답변

0

, 당신은 HttpContext.Current.Request를 사용하여 들어오는 파일을 잡을 수 있어야합니다.

아래 코드는 파일을 웹 서비스가있는 현재 디렉토리에 저장합니다.

[WebMethod] 
    public void AttachFiles() 
    { 
     HttpPostedFile file = HttpContext.Current.Request.Files[0]; 
     using (var fileStream = new System.IO.FileStream(AppDomain.CurrentDomain.BaseDirectory+file.FileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)) 
     { 
      file.InputStream.CopyTo(fileStream); 
     } 
    } 
+0

안녕하세요 ...이 줄에 예외가 있습니다. HttpPostedFile file = HttpContext.Current.Request.Files [0]; 내가 서비스에 올 때. '색인이 범위를 벗어났습니다. 음수가 아니어야하며 콜렉션의 크기보다 작아야합니다. 매개 변수 이름 : index ' – Shreekant