0

WCF サービスから Amazon S3 ウェブサーバーに画像をアップロードしようとしています。Web プロジェクトで動作している Amazon S3 コードと、WCF サービスの Uploded\test.jpg に画像をアップロードする画像アップロード メソッドがあります。WCF サービスで動作する Amazon S3 コードをどのように使用できるかわかりません。1 つ目は、アップロードしていないコード内に次のコード行を追加するときに、Amazon 資格情報を Web confing に入れる方法がわかりません。

    <appSettings>
    <add key="AWSAccessKey" value="myaccessKey"/>
    <add key="AWSSecretKey" value="MySecretKey"/>
</appSettings>

これは、WCF サーバーにアップロードするための私の方法です。ここで //AWS と言ったときに、AWS コードを追加する必要があると思います。

[WebInvoke(UriTemplate = "UploadImage", Method = "POST")]
    Stream UploadImage(Stream request)
    {

        Stream requestTest = request;

        StreamWriter sw = null;


        string logpath = HttpContext.Current.Server.MapPath("Uploded\\logtest.txt");

        logpath = logpath.Replace("SSGTrnService\\", "");


        HttpMultipartParser parser = new HttpMultipartParser(request, "file");

        string filePath = "";


        string passed = parser._content;

        string sLogFormat = DateTime.Now.ToShortDateString().ToString() + " " + DateTime.Now.ToLongTimeString().ToString() + " ==> ";
        sw = new StreamWriter(logpath);


        sw.Flush();


        if (parser.Success)
        {


            // Save the file somewhere 
            //File.WriteAllBytes(FILE_PATH + title + FILE_EXT, parser.FileContents);

            // Save the file 
            //SaveFile( mtp.Filename, mtp.ContentType, mtp.FileContents);
            FileStream fileStream = null;
            BinaryWriter writer = null;


            try
            {


                filePath = HttpContext.Current.Server.MapPath("Uploded\\test.jpg");  // BuildFilePath(strFileName, true);    





                filePath = filePath.Replace("SSGTrnService\\", "");

                fileStream = new FileStream(filePath, FileMode.Create);

                fileStream.Write(parser.FileContents, 0, parser.FileContents.Length);

                // return filePath;
            }
            catch (Exception ex)
            {

            return "Error: " + ex.Message;

            }
            finally
            {

                if (fileStream != null)
                    fileStream.Close();
                if (writer != null)
                    writer.Close();
                //AWS Code



            }
        }

        //
        // returning text for html DOM
        //

        string text = "Image uploaded: " + parser.Filename + " / " + parser.ContentType + filePath + passed;
        System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
        MemoryStream ms = new MemoryStream(encoding.GetBytes(text));
        WebOperationContext.Current.OutgoingResponse.ContentType = "text/html";
        return ms;
    }

WCF サービスから Amazon S3 を呼び出す際のガイドは素晴らしいでしょう。

4

1 に答える 1

0

参照する必要がある amazon dll (AWSSDK.dll) があり、以下のコード行を使用します。

var transferUtility = new TransferUtility(accessKey, secretKey);
var bucketName = "Files";
transferUtility.Upload(filePath, bucketName, Guid.NewGuid().ToString());

注: Amazon S3 バケット「ファイル」が存在することを確認してください。それ以外の場合は、バケットが存在するかどうかを確認してから、アップロード メソッドの呼び出しを実行する必要があります。それが役立つことを願っています。

于 2013-05-23T11:22:34.750 に答える