Saya menggunakan ASP.NET Web API .
Saya ingin mengunduh PDF dengan C # dari API (yang dihasilkan API).
Bisakah saya meminta API mengembalikan byte[]
? dan untuk aplikasi C # bisa saya lakukan:
byte[] pdf = client.DownloadData("urlToAPI");?
dan
File.WriteAllBytes()?
c#
asp.net-web-api
Kyle
sumber
sumber
Jawaban:
Lebih baik mengembalikan HttpResponseMessage dengan StreamContent di dalamnya.
Berikut contohnya:
UPD dari komentar oleh patridge : Jika ada orang lain di sini yang ingin mengirimkan respons dari array byte alih-alih file sebenarnya, Anda akan ingin menggunakan ByteArrayContent (someData) baru daripada StreamContent (lihat di sini ).
sumber
new ByteArrayContent(someData)
alih-alihStreamContent
(lihat di sini ).Saya melakukan tindakan berikut:
sumber
Contoh dengan
IHttpActionResult
inApiController
.Jika Anda tidak ingin mengunduh PDF dan menggunakan browser bawaan penampil PDF, hapus dua baris berikut:
sumber
var file = GetFile(id);
.file.SomeData
adalah Byte Array (byte[]
) danfile.FileName
merupakanstring
.Sekadar catatan untuk
.Net Core
: Kita bisa menggunakanFileContentResult
dan menyetel contentType keapplication/octet-stream
jika kita ingin mengirim byte mentah. Contoh:sumber
FileContentResult
dipanggilFileDownloadName
untuk menentukan nama fileSaya bertanya-tanya apakah ada cara sederhana untuk mendownload file dengan cara yang lebih ... "umum". Saya datang dengan ini.
Ini sederhana
ActionResult
yang akan memungkinkan Anda mengunduh file dari panggilan pengontrol yang mengembalikan fileIHttpActionResult
. File tersebut disimpan dibyte[] Content
. Anda dapat mengubahnya menjadi aliran jika perlu.Saya menggunakan ini untuk mengembalikan file yang disimpan dalam kolom varbinary database.
sumber