-1

プロバイダー x でホストされている ASP.NET に基づく Web サイトがあります。さまざまな理由から、ユーザーがアップロードしたすべての画像ファイルを、プロバイダー y がホストする別のサイトに保管したいと考えています。プロバイダー y は PHP ベースです。

x 上の ASP.NET サイトからプロバイダー y の "PHP ストア" に画像を転送する最良の方法は何でしょうか? 画像は、Web サービスと「手動」ファイル アップロードを介して ASP.NET サイトに届きます。

画像を保存するときの「問題」にすぎません。読み取り時に、画像の URL はもちろん y の場所を指すだけです。

唯一の方法は、x からのイメージを使用して y で呼び出すことができる Web サービスを PHP で作成することだと思いますが、他にもっと良い方法はありますか? そうでない場合、その Web サービスのセットアップに必要な ASP.NET および PHP コードの例へのリンクを知っている人はいますか?

4

4 に答える 4

1

ご存知のように、それを行う方法はWebサービスを使用することです。両端(ASP.NETとPHP)でそれを行う方法の明確な例を見つけることができなかったので、これが私が最終的に得たものであり、それは機能します。

PHPファイル

<?php
$target_path =  "uploadfolder/";
$target_path = $target_path . basename( $_FILES['file']['name']); 
if(move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) {
    echo "OK";
} else{
    echo "ERROR ".$target_path;
}
?>

これは私がASP.NET側に持っているものです:

    private void UploadFile(string postUrl, string postFilename)
    {
        WebClient wb = new WebClient();
        try
        {
            byte[] responseArray = wb.UploadFile(postUrl, postFilename);
            string resp = Encoding.UTF8.GetString(responseArray);
            // You can read the response (resp) and check if you get an OK or ERROR from the PHP
        }
        catch (WebException e)
        {
            var response = (HttpWebResponse)e.Response;
            // Do stuff based on the exception
        }
    }

使用法:UploadFile( "http://www.domain.com/thephpscript.php"、FileUpload1.FileName);

.NET WebClient.UploadFileメソッドを使用すると、ファイルに「ファイル」という名前が付けられ、PHP側の$_FILES連想配列で知る必要があると推測したのは幸運でした。それが私がこれを投稿した主な理由なので、別の親切な魂が推測する必要がないことを願っています。

もちろん、ユーザーがアップロードしているファイルの種類などを確認する必要がありますが、これが基本です。

于 2012-12-27T16:10:54.060 に答える
1

POSTリクエストで生データを送信するだけです…</p>

phpページは、ファイルが承認されたソースからのものであることを保証し、それをキャプチャして処理します。(ソースは1つの特定のWebサイトのみであるため、WebサイトのソースIPアドレスからすべてを許可するのが安全である可能性があります

Ideas on how to best accomplish this?

要求側(ASP.Net)では、 HttpWebRequestクラスとHttpWebResponseクラスを使用する必要があります。応答(PHP)側では、フォーム送信の処理と何ら変わりはありません。

于 2012-12-27T12:17:51.863 に答える
1

Web サービスと言うときは、投稿されたデータを解析して適切な場所に保存する PHP ページで構成される単純な REST Web サービスを指していると思います。

私が正しければ、サーバー Y に画像を送信する良い方法のように思えます。そうでなく、適切な SOAP/XML Web サービスを参照している場合、これを達成するためだけにそのような高度なアプローチを使用する必要はないと思います。シンプルなタスク。

簡単に言うと、ASP.NET サーバー側でイメージ データを含むWebClientPOST を作成するために使用する必要があるのは 1 つだけです。WebRequestPHP 側では、投稿されたデータを受け取り、そのデータで好きなことを行うことができます。

これは最も簡単な方法ですが、転送されるファイルのサイズとタスクの性質によっては、次のような別の方法があります。 - 転送するファイルが大きい場合、またはファイルを同期的に転送する必要がない場合は、要件に応じてアドホックまたは統合ソリューションを使用する FTP プロトコル。

于 2012-12-27T12:20:11.063 に答える
0

これは、PHPの最後でWebサービスを使用して、次のように投稿されたファイルを保存することで実現できます。byte[]

ASP.NETでは、次のようにファイルを送信します。-

if (FileUpload1.HasFile)
    {
        string spath = Server.MapPath("" + FileUpload1.FileName);
        FileUpload1.PostedFile.SaveAs(spath);
        FileInfo fInfo = new FileInfo(spath);
        long numBytes = fInfo.Length;
        FileStream fStream = new FileStream(spath, FileMode.Open, FileAccess.Read);
        BinaryReader br = new BinaryReader(fStream);
        byte[] data = br.ReadBytes((int)numBytes);
        br.Close();
        string result = src.UploadFile(data, FileUpload1.FileName);
        fStream.Close();
        fStream.Dispose();
}

クラスsrcは、データを送信するために使用されます。つまり、PHPサーバーでWebサービスを使用して、データをファイル名とともにファイルとして保存します。

于 2012-12-27T12:38:29.710 に答える