0

PHPサーバーにC#コードを含むファイルをアップロードしています。しかし、いくつかの問題に直面しています。

まず、WebClient オブジェクトを使用して UploadFile() メソッドを呼び出してファイルをアップロードし、次のコードで UploadString() メソッドを呼び出して文字列をアップロードしていました。

        String StoreID = "First Store";
        WebClient Client = new WebClient();
        String s = Client.UploadString("http://localhost/upload.php", "POST", StoreID);
        Client.Headers.Add("Content-Type","binary/octet-stream");
        byte[] result = Client.UploadFile("http://localhost/upload.php", "POST", "C:\\aaaa.jpg");
        s = s + System.Text.Encoding.UTF8.GetString(result,0,result.Length);

問題は、2 回要求しているため、文字列とファイルが同時に送信されないことです。文字列またはファイルのいずれかを受信して​​います。しかし、私は同時に両方が必要です。UploadData()はバイトコードを使用するため、使用したくありません。php でそれを抽出する方法を知っているからです。

その文字列をフォルダー名にします。文字列とファイルを送信する必要があるため、そのファイルはphpサーバーの指定されたフォルダーに保存できます。

WebRequest と WebResponse オブジェクトを使用した解決策があるかもしれないことを調査しました。しかし、C# で WebResponse を使用してリクエストを送信し、PHP で取得する方法がわかりません。

助言がありますか!!!!

4

2 に答える 2

0

ファイルを受け入れる Web サービスを php で作成できます。次に、その Web サービスを公開し、それを C# 参照に追加してから、ファイルを受け入れる C# コード内からメソッドを呼び出すだけです。

PHPリンクで SOAP を作成する方法

于 2012-10-31T12:26:32.703 に答える
0

これを試して :

    WebClient web = new WebClient();
try{

    web.UploadFile("http://" + ip + "/test.php", StoreID);
}
catch(Exception e)
{
    MessageBox.Show("Upload failed");
}

これで、PHP ファイルからファイルにアクセスできます。

 <?php
//check whether the folder the exists
if(!(file_exists('C:/Users/dhanu-sdu/Desktop/test')))
{
  //create the folder
  mkdir('C:/Users/ComputerName/Desktop/test');
  //give permission to the folder
  chmod('C:/Users/ComputerName/Desktop/test', 0777);
}

//check whether the file exists
if (file_exists('C:/Users/ComputerName/Desktop/test/'. $_FILES["file"]["name"]))
{
  echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
  //move the file into the new folder
  move_uploaded_file($_FILES["file"]["tmp_name"],'C:/Users/ComputerName/Desktop/test/'. $_FILES["file"]["name"]);

}

?>

また、次のコードを使用して、PHP サーバーからデータをダウンロードし、C# Web ブラウザーで表示することもできます。

 WebClient web = new WebClient();
try{
    byte[] response = web.DownloadData("http://" + ip +"/test.php");
    webBrowser1.DocumentText = System.Text.ASCIIEncoding.ASCII.GetString(response);
}
catch(Exception e)
{
    MessageBox.Show("Download failed");
}
于 2012-10-31T12:22:13.550 に答える