2013-04-24 3 views
0

다음을 수행 중입니다. 1) 클라이언트가 API 호출을 사용하여 서버에서 ZIP 파일을 요청합니다. 2) 그는 API 요청에서 aspx 프로그램 인 call back url을 제공합니다. 3) 우리는 PHP CURL 스크립트를 사용하여 ZIP 파일을 작성하여 ZIP 파일을 aspx 프로그램에 업로드합니다.php curl을 사용하여 원격 서버에 zip 파일 업로드

파일이 서버에 업로드되면 문제는 ZIP 파일 형식이 SFX Zip 아카이브로 변경된다는 것입니다. 간단한 PHP 스크립트를 사용하여 동일한 파일을 서버에 업로드하면 형식은 변경되지 않습니다. CURL을 사용하여 파일을 업로드하는 방식에 문제가 있는지 또는 클라이언트가 ZIP 파일을 서버에 저장하고 있는지 여부는 확실하지 않습니다.

컬 코드는 다음과 같습니다 :

$download_file = "/tmp/test.zip"; 
$callBackUrl = "http://www.remoteurl/theclients_uploadcode.aspx"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, array('file' => "@$download_file")); 
curl_setopt($ch, CURLOPT_URL, $callBackUrl); 
curl_exec($ch); 
curl_close($ch); 

클라이언트는 데이터를 저장하기위한 영문 코드를 제공 : 사전에

private void SavePost() 
{ 
    HttpPostedData = ReadFully(this.Page.Request.InputStream); 
    Timestamp = DateTime.Now.ToString("MMddyyyy-hhmmss"); 
    Timestamp = Timestamp.Replace("-", "").Replace(" ", "").Replace(":", "");      
    if (FileName.ToString() == string.Empty) 
    { 
    FileName = Timestamp; 
    } 
    if (FileName.Contains(".zip") == false) 
    { 
    FileName = FileName + ".zip"; 
    } 
    tempFilePath = (tempFilePath + FileName); 
    Response.Write((tempFilePath + (" HttpPostedData:" + HttpPostedData))); 
} 

public static byte[] ReadFully(Stream input) 
    { 

     byte[] buffer = new byte[16 * 1024]; 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      int read; 
      while ((read = input.Read(buffer, 0, buffer.Length)) > 0) 
      { 
       ms.Write(buffer, 0, read); 
      } 
      return ms.ToArray(); 
     } 

    } 

감사합니다.

답변

0

저장하면 SavePost 저장하지 않으시겠습니까? this.Page.Request.InputStream에서 읽으려고하면 FileUpload to FileStream 변환 방법을 참조하십시오.

btw 또한 How to read inputstream from HTML file type in C# ASP.NET without using ASP.NET server side control을 참조하십시오. 이것은 (C#)도 사용할 수 있음을 보여줍니다 :

HttpPostedFile file = Request.Files["file"]; 
if (file != null && file.ContentLength) 
{ 
    string fname = Path.GetFileName(file.FileName); 
    file.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", fname))); 
}