我从MVC项目调用Web API。 Web API在单击按钮后返回我想直接在浏览器中显示的PDF文件。我的问题是,当我点击链接时,它会下载pdf文件并在左下角显示图标,我必须单击它并在acrobat中打开PDf。如何通过单击链接直接在浏览器中打开pdf来实现它?
这是我打开pdf的MVC项目中的代码:
[HttpGet]
public FileResult openPdf(string name)
{
byte[] pdfByte = DownloadFile();
return File(pdfByte, "application/pdf", name);
}
internal byte[] DownloadFile()
{
string serverUrl = "http://localhost/GetPdf?Number=3671";
var client = new System.Net.WebClient();
client.Headers.Add("Content-Type", "application/pdf");
return client.DownloadData(serverUrl);
}
这是我的Web API中返回pdf的方法:
public HttpResponseMessage GetPdfNameByRemRef(string RemoteRefNumber)
{
var stream = new MemoryStream();
var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ByteArrayContent(stream.GetBuffer())
};
byte[] fileBytes = System.IO.File.ReadAllBytes(@"C:\Pdf\CreditApplication_08192006_102714AM_et montis.pdf");
response.Content = new ByteArrayContent(fileBytes);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = customerInfo.Application_Filename;
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
return response;
}
答案 0 :(得分:0)
您可以尝试使用值Content-Disposition
添加inline
标头。
Response.AddHeader("Content-Disposition", "inline;filename=fileName.pdf");
但是,不同浏览器和您正在服务的文件类型的行为可能会有所不同。如果Content-Disposition
设置为inline
,浏览器将尝试在浏览器中打开文件,但如果文件类型未知,则可能会失败(例如.rar,.zip,.pdf / when pdf读者插件缺失/,如果浏览器老了等等。)。