Plupload というサードパーティのアップローダを使用しています。選択した画像を WebAPI メソッドに渡したいのですが、方法がわかりません。
フロントエンドで私はファイルオブジェクトを投稿します
uploader.bind('FileUploaded', function (up, file) {
data = { name: file.name, id: file.id, size: file.size, key: path };
$.ajax({
url: sf.getServiceRoot('mysite') + "upload/getS3Client",
type: "POST",
data: data,
beforeSend: sf.setModuleHeaders
}).done(function (response, status) {
alert(response);
}).fail(function (xhr, result, status) {
alert("error: " + result);
});
});
バックエンドでファイルオブジェクトを受け取りましたが、それをどうするかわかりません...
私が使用しようとしたMVCコードスニペットがありますが、明らかにWeb APIはRequest.Files [0]をサポートしていないため、迷っています。これはスニペットです
HttpPostedFileBase file = Request.Files[0];
if (file.ContentLength > 0) // accept the file
{
string accessKey = "XXXXXXXXXXX";
string secretKey = "122334XXXXXXXXXX";
AmazonS3 client;
using (client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey))
{
PutObjectRequest request = new PutObjectRequest();
request.WithBucketName("mealtik")
.WithCannedACL(S3CannedACL.PublicRead)
.WithKey("meals/test.jpg").InputStream = file.InputStream;
S3Response response = client.PutObject(request);
}
}
私の方法は次のようになります..現在流動的です。
public HttpResponseMessage getS3Client(file submitted)
{
HttpRequestMessage request = this.Request;
string accessKey = "xxxx";
string secretKey = "xxxx";
AmazonS3 client;
using (client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey ))
{
MemoryStream ms = new MemoryStream();
PutObjectRequest request = new PutObjectRequest();
request.WithBucketName("Dev");
.WithKey("drop/" + submitted.name).InputStream = file.InputStream;
S3Response response = client.PutObject(request);
}
return Request.CreateResponse(HttpStatusCode.OK, "Success");
}
それを要約します。ファイルオブジェクトをメソッドに渡し、それをAmazon s3にプッシュしようとしています.MVCメソッドは見た目どおりに動作しますが、Web APIには同じことが当てはまりません.
どうすればこれを行うことができますか?