以下が行われています: 1) クライアントは、API 呼び出しを使用してサーバーから ZIP ファイルを要求します。2) 彼は、API 要求で aspx プログラムであるコールバック URL を提供します。3) ZIP ファイルを作成し、php CURL スクリプトを使用して ZIP ファイルを aspx プログラムにアップロードします。
問題は、ファイルがサーバーにアップロードされると、ZIP ファイル形式が (SFX Zip アーカイブに) 変更されることです。単純な php スクリプトを使用して同じファイルがサーバーにアップロードされた場合、形式は変更されません。問題が CURL を使用してファイルをアップロードする方法にあるのか、それともクライアントがサーバーに ZIP ファイルを保存する方法にあるのかはわかりません。
CURL コードは次のとおりです。
$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);
クライアントは、データを保存するための aspx コードを提供しました。
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();
}
}
前もって感謝します。