У меня есть большой файл, и я хочу отправить его в Web API, который отправит его в Amazon.Поскольку файл большой, я хочу отправить файл в Amazon по частям.Поэтому, если у меня есть файл размером 1 ГБ, я хочу, чтобы мой API получал файл, скажем, 20 МБ, чтобы я мог отправить его в Amazon, а затем снова получить 20 МБ.Как это выполнимо.Ниже моя попытка.
public async Task<bool> Upload()
{
var fileuploadPath = ConfigurationManager.AppSettings["FileUploadLocation"];
var provider = new MultipartFormDataStreamProvider(fileuploadPath);
var content = new StreamContent(HttpContext.Current.Request.GetBufferlessInputStream(true));
// Now code below writes to a folder, but I want to make sure I read it as soon as I receive some chunk
await content.ReadAsMultipartAsync(provider);
return true;
}
Псевдокод:
While (await content.ReadAsMultipartAsync(provider) == 20 MB chunk)
{
//Do something
// Then again do something with rest of chunk and so on.
}
Файл размером 1 ГБ.
На данный момент весь файл отправляется по этой строке кода:
await content.ReadAsMultipartAsync(provider);
Я заблудился, пожалуйста, помогите мне.Все, что мне нужно, это получить файл маленьким кусочком и обработать его.
PS: Я отправляю файл как MultiPart / Form-Data от Почтальона для тестирования.
![enter image description here](https://i.stack.imgur.com/YTpTx.png)
Попытка № 2:
var filesReadToProvider = await Request.Content.ReadAsMultipartAsync();
foreach (var content in filesReadToProvider.Contents)
{
var stream = await content.ReadAsStreamAsync();
using (StreamReader sr = new StreamReader(stream))
{
string line = "";
while ((line = sr.ReadLine()) != null)
{
using (MemoryStream outputStream = new MemoryStream())
using (StreamWriter sw = new StreamWriter(outputStream))
{
sw.WriteLine(line);
sw.Flush();
// Do Something
}
}
}
}