【发布时间】:2013-02-13 08:09:53
【问题描述】:
早上好,我有一个桌面应用程序,它将文件上传到 WCF 服务,然后 WCF 服务上传到 Amazon S3。
这是我接收文件并上传到 S3 的 WCF 方法。
public void UploadFile(RemoteFileInfo request)
{
config = new AmazonS3Config();
config.CommunicationProtocol = Protocol.HTTP;
accessKeyID = "XXXXXXX";
secretAccessKeyID = "YYYYYYYY";
client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKeyID, secretAccessKeyID, config);
int chunkSize = 2048;
byte[] buffer = new byte[chunkSize];
using (System.IO.MemoryStream writeStream = new System.IO.MemoryStream())
{
do
{
// read bytes from input stream
int bytesRead = request.FileByteStream.Read(buffer, 0, chunkSize);
if (bytesRead == 0) break;
// simulates slow connection
System.Threading.Thread.Sleep(3);
// write bytes to output stream
writeStream.Write(buffer, 0, bytesRead);
} while (true);
// report end
Console.WriteLine("Done!");
// start the uploading to S3
PutObjectRequest fileRequest = new PutObjectRequest();
fileRequest.WithInputStream(writeStream);
fileRequest.Key = "testfile.pdf";
fileRequest.WithBucketName("tempbucket");
fileRequest.CannedACL = S3CannedACL.Private;
fileRequest.StorageClass = S3StorageClass.Standard;
client.PutObject(fileRequest);
writeStream.Close();
}
}
在我的客户端上,当我将文件上传到 WCF 服务时,我会实时获得进度,但是当我得到 100% 完成时,这并不意味着文件已经上传到 S3,所以我想知道在我编写流时是否可以将文件上传到 S3(在 using
(System.IO.MemoryStream writeStream = new System.IO.MemoryStream())
{
这可能吗?有什么指导方针吗?
提前欣赏。
【问题讨论】:
-
不幸的是,您的问题有点不清楚(至少对我而言)。您的客户如何实时显示进度?
-
WCF 有一个功能。