私はPortableWebDavLibraryを使用して、nextcloud WebDAV APIに接続しています。 https://github.com/DecaTec/Portable-WebDAV-Library別のAPIからファイルをダウンロードし、バッファでこれを返します。
私のシンプルなコントローラファイルのダウンロードが、メモリ内のファイル(のMemoryStream)とプロセスのメモリを保存する前に、最大のファイルに2つ以上の/ 3GBまで上昇さ
// GET api/download/Test/pedro.txt
[HttpGet("{*name}")]
public async Task<IActionResult> Get(string name)
{
if (String.IsNullOrEmpty(name))
{
return BadRequest("TEXT ...");
}
try
{
var credentials = new NetworkCredential("USER", "PASS");
using (var webDavSession = new WebDavSession(Global.BASE_URL, credentials))
{
var stream = new MemoryStream();
stream.SetLength(20971520); // TEST set max size
var responseStream = await webDavSession.DownloadFileAsync(name, stream);
stream.Seek(0, SeekOrigin.Begin);
// Response.Headers.Add("content-disposition", "attachment; filename=" + name.TrimEnd('/').Split("/").Last());
return new FileStreamResult(stream, new MediaTypeHeaderValue("application/octet-stream"))
{
FileDownloadName = name.TrimEnd('/').Split("/").Last()
};
}
}
catch (Exception e)
{
return BadRequest("TEXT ...");
}
。
別のAPIからファイルを取得しているうちに、どのようにダウンロードできますか?バッファに似
編集31/12/2017
NextcloudこのFileStreamResult作業良いと、管理(WebDAVなし)GETリクエストを使用してファイルをダウンロードすることができます。
答えていただきありがとうございます。一時フォルダにファイルを書き込むことはできません。同じ時間に彼を送り、すべてのファイルを読むのを待っていませんか? – erni
この目的のために 'System.Net.Http'に' PushStreamContent'があります。残念ながら、この時点では.Net Coreには何も似ていません。 – CodeFuller