Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文件传递给方法的WEB API_C#_Amazon S3_Asp.net Web Api - Fatal编程技术网

C# 将文件传递给方法的WEB API

C# 将文件传递给方法的WEB API,c#,amazon-s3,asp.net-web-api,C#,Amazon S3,Asp.net Web Api,我正在使用一个名为Plupload的第三方上传程序,我希望将选定的图像传递给WebAPI方法,但我似乎不知道该怎么做 在前端,我发布了一个文件对象 uploader.bind('FileUploaded', function (up, file) { data = { name: file.name, id: file.id, size: file.size, key: path }; $.ajax({ url: sf.getServi

我正在使用一个名为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");
    }
总而言之。我将文件对象传递给我的方法,并尝试将其推送到AmazonS3。声明的MVC方法似乎可以工作,但这不适用于WebAPI


我该怎么做呢?

如果我没有遗漏某些内容,那么这似乎是与该代码片段的重复/高度相关,我也看到过该代码片段,也不理解它。我看不出该文件是从哪里获得的。它不像MVC Request.Files[0]那样简单明了,因此我不知道如何在当前项目中实现该片段。