Я использую веб-API ASP.NET .
Я хочу загрузить PDF-файл с C # из API (который генерирует API).
Могу ли я просто вернуть API byte[]
? а для приложения C # я могу просто сделать:
byte[] pdf = client.DownloadData("urlToAPI");?
и
File.WriteAllBytes()?
c#
asp.net-web-api
Кайл
источник
источник
Ответы:
Лучше вернуть HttpResponseMessage с StreamContent внутри него.
Вот пример:
UPD из комментария патриджа : если кто-то еще придет сюда, чтобы отправить ответ из байтового массива вместо фактического файла, вы захотите использовать новый ByteArrayContent (someData) вместо StreamContent (см. Здесь ).
источник
new ByteArrayContent(someData)
вместоStreamContent
(см. Здесь ).Я сделал следующее действие:
источник
Пример с
IHttpActionResult
inApiController
.Если вы не хотите загружать PDF-файл и использовать браузер, встроенный в программу просмотра PDF-файлов, удалите следующие две строки:
источник
var file = GetFile(id);
.file.SomeData
является байтовым массивом (byte[]
) иfile.FileName
являетсяstring
.Просто примечание
.Net Core
: мы можем использоватьFileContentResult
и установить для contentType значение,application/octet-stream
если мы хотим отправлять необработанные байты. Пример:источник
FileContentResult
вызываемоеFileDownloadName
для указания имени файлаМне было интересно, есть ли простой способ загрузить файл более ... "общим" способом. Я это придумал.
Это простой
ActionResult
способ загрузить файл из вызова контроллера, который возвращает файлIHttpActionResult
. Файл хранится в форматеbyte[] Content
. При необходимости вы можете превратить его в поток.Я использовал это для возврата файлов, хранящихся в столбце varbinary базы данных.
источник