Как преобразовать строку в байтовый массив для загрузки PDF в C#
Я работаю с приложением.NET MVC, так как мне нужно реализовать функцию загрузки PDF. Я знаю, как загрузить файл, используя существующий файл, но моя проблема в том, что я получаю содержимое файла pdf в виде строки из службы SOAP.
Содержимое PDF, которое я получаю, выглядит так:
%PDF-1.4
%Óëéá
1 0 obj
<</Creator (Mozilla/5.0 \(Windows NT 6.1; Win64; x64\) AppleWebKit/537.36 \(KHTML, like Gecko\) Chrome/65.0.3325.181 Safari/537.36)
/Producer (Skia/PDF m65)
/CreationDate (D:20180407105711+00'00')
/ModDate (D:20180407105711+00'00')>>
endobj
2 0 obj
<</Filter /FlateDecode
/Length 3817>> stream
xœÕ›ÛŽ$9†
..........
У меня есть следующий код для загрузки файла:
public FileResult Download()
{
byte[] fileBytes = System.IO.File.ReadAllBytes(@"c:\folder\myfile.ext");
string fileName = "myfile.ext";
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet,
fileName);
}
Но как преобразовать строку содержимого файла в байтовый массив?
Я пытался преобразовать строку в байтовый массив, используя MemoryStream
а также
byte[] bytes = Encoding.ASCII.GetBytes(someString);
но в этом случае PDF Reader показывает ошибку, что файл поврежден.
0 ответов
Пытаться
public async Task GetPdf()
{
var url = "xxxxxxxx";
HttpClient client = UtilHttp.CreateHttpClient();
HttpResponseMessage response = await client.GetAsync(url);
// json mode
string result = await response.Content.ReadAsStringAsync(); // json
// archive mode content stream
var stream = await response.Content.ReadAsStreamAsync(); //pdf
byte[] bytes;
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
bytes = memoryStream.ToArray();
}
}