问题描述
我希望使用 C# 和 WebClient 或 HttpClient 将文件分多个部分上传到 Amazon S3。上传过程分为 4 个步骤:
我已经为步骤 1、2 和 4 编写了方法,但我不清楚如何实际分部分上传文件。这些部分的大小需要为 5mb(或者对于最后一部分来说更小),我已经创建了一个方法来计算所选文件应该分成多少部分。
public void UploadSingleFilePresignedUrl(string filePath,string fileName)
{
string preSignedUrl = _server.GeneratePreSignedURL(fileName);
HttpWebRequest httpRequest = WebRequest.Create(preSignedUrl) as HttpWebRequest;
httpRequest.Method = "PUT";
using (Stream dataStream = httpRequest.GetRequestStream())
{
byte[] buffer = new byte[8000];
using FileStream fileStream = new(filePath,FileMode.Open,FileAccess.Read);
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer,buffer.Length)) > 0)
{
dataStream.Write(buffer,bytesRead);
}
}
HttpWebResponse response = httpRequest.GetResponse() as HttpWebResponse;
}
在第 2 步中,我为每个部分创建了一个预签名 URL 列表。我计划遍历列表并将预先签名的 URL 和部件号传递给每个部件的方法。
此外,每当您上传部分时,Amazon S3 都会在其响应中返回一个 ETag 标头。对于每一个part上传,我需要记录part号和ETag值。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)