Я пытаюсь создать Restful API для пользователя, чтобы загрузить zip-файл из облачного хранилища через мой API.
Причины для этого:
- Для предотвращения прямого доступа к нашему внутреннему облачному хранилищу
- Чтобы скрыть используемую технологию (марка хранилища и т. Д.)
- Чтобы получить контроль над запросом пользователя (регистрация, проверка)
На моем APi должно быть два способа:
Скачать какБайт [] и возврат
Загрузить как временный файл и прочитать как байт [] и вернуть
public static byte[] GetReportFile(GetReportRequest request, string refId)
{
//C# byte limit is 2GB
byte[] file = null;
try
{
var report = ReportDao.GetReport(request.ReportId);
var tempFilePath = new StorageService().DownloadByUriToTempFile(report.CloudPath);
}
catch (Exception ex)
{
}
return file;
}
Для обоих способов требуется загрузкафайл в память или временный файл, дождитесь завершения передачи файла (дождитесь окончания загрузки пользователя или просто доставьте по HTTP ???), а затем освободите память или удалите временный файл.
В случае, если файлимеет размер 2 ГБ (предположим, это достаточно для сервера), есть ли способ минимизировать нагрузку на стороне сервера, может быть что-то вроде загрузки патрона, сохранение только небольшой части используемой памяти.
Заранее спасибо.
Джейми