Я могу скачать PDF из моего кода ниже, однако, «PDF поврежден» упоминается, когда я пытался открыть файл PDF. В чем проблема?
Я использую
byte[] binFile = File.ReadAllBytes(file_path_with_filename_with_ext);
в качестве параметра SQL, который прошел через хранимую процедуру.
C# код
[HttpGet]
public IActionResult DownLoadPdf(int? ID)
{
string sql = @"SELECT ID, PDFReport
FROM [TABLE]"; // which is VARBINARY(MAX) value
byte[] Report = _dbContext.PDFdto.FromSql(sql).AsNoTracking().Where(r => r.ID == ID.ToString()).Select(r => r.PDFReport).FirstOrDefault();
return Json(new { Report });
}
HTML:
$scope.loadPdfClick = function (ID) {
$http({
url: '@Url.Content("~/Report/DownLoadPdf")',
method: "GET",
params: {
"ID": ID
},
headers: {
'Content-type': 'application/json'
},
responseType: 'arraybuffer'
}).success(function (data, status, headers, config) {
var blob = new Blob([data], { type: "application/pdf" });
var objectUrl = URL.createObjectURL(blob);
var a = document.createElement('a');
document.body.appendChild(a);
a.setAttribute('style', 'display:none');
a.setAttribute('href', objectUrl);
var filename = "Report_Test.pdf";
a.setAttribute('download', filename);
a.click();
URL.revokeObjectURL(objectUrl);
}).error(function (data, status, headers, config) {
messageAlert("ERROR");
});
PS: использование. NET Core 1.1 с Angular