Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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# AWS.NET SDK多部分文件从Http上载_C#_Amazon S3 - Fatal编程技术网

C# AWS.NET SDK多部分文件从Http上载

C# AWS.NET SDK多部分文件从Http上载,c#,amazon-s3,C#,Amazon S3,我已经实现了一个.ashx处理程序,它从客户端接收文件的分块上传部分。之前,我先将文件存储在临时文件夹中,然后再将其上载到AWS。 由于文件已经变得相当大,我想跳过临时文件夹部分,并使用多部分请求将它们直接上传到AWS 到目前为止,它看起来还不错,但我找不到一个重载来接受HttpPostedFile或流进行上传 我可以做如下的事情吗 // Create request to upload a part. UploadPartRequest uploadReques

我已经实现了一个.ashx处理程序,它从客户端接收文件的分块上传部分。之前,我先将文件存储在临时文件夹中,然后再将其上载到AWS。 由于文件已经变得相当大,我想跳过临时文件夹部分,并使用多部分请求将它们直接上传到AWS

到目前为止,它看起来还不错,但我找不到一个重载来接受HttpPostedFile或流进行上传

我可以做如下的事情吗

        // Create request to upload a part.
        UploadPartRequest uploadRequest = new UploadPartRequest()
            .WithBucketName(myBucket)
            .WithKey(myKey)
            .WithUploadId(myUploadId)                
            .WithPartNumber(partNumber)
            .WithInputStream(inputStream); 

简单:只需通过属性设置输入流:

            // Create request to upload a part.
            UploadPartRequest uploadRequest = new UploadPartRequest()
                .WithBucketName(myBucket)
                .WithKey(myKey)
                .WithUploadId(UploadId)
                .WithPartNumber(PartNumber)
                .WithPartSize(inputStream.Length)
                .WithFilePosition(FilePosition);

            uploadRequest.InputStream = inputStream;

WithInputStream将返回s3请求,而不是UploadPartRequest 因此,只需将返回类型强制转换为UploadPartRequest

// Create request to upload a part.
        UploadPartRequest uploadRequest = new UploadPartRequest()
            .WithBucketName(myBucket)
            .WithKey(myKey)
            .WithUploadId(myUploadId)                
            .WithPartNumber(partNumber);

uploadRequest = (UploadPartRequest)uploadRequest.WithInputStream(ftiObject.sourceStream); 
这对我有用

UploadPartRequest uploadRequest = new UploadPartRequest()
        .WithBucketName(myBucket)
        .WithKey(myKey)
        .WithUploadId(myUploadId)                
        .WithPartNumber(partNumber)
        .WithInputStream(stream) as UploadPartRequest;
这也是可能的