[英]Prevent code from prompting user to save file
I use this method below in my report controller. 我在报表控制器中使用以下方法。 It succesfully returns file content which I assign to a varBinary(MAX) field in my database.
它成功返回文件内容,该文件内容我分配给数据库中的varBinary(MAX)字段。 My problem is, when this code executes it causes the browser to prompt the user to SAVE or OPEN the file.
我的问题是,执行此代码时,它会导致浏览器提示用户保存或打开文件。 I want to stop this from happening.
我想阻止这种情况的发生。
How can I force it to only return the binary data to the calling controller method and not push results to the client browser? 如何强制它仅将二进制数据返回给调用控制器方法,而不将结果推送到客户端浏览器?
private FileContentResult RenderReportFile(LocalReport localReport, List<ReportDataSource> listDS, string sFilename, string sReportType, bool bLandscape)
{
string sHeight = "11";
string sWidth = "8.5";
if (bLandscape)
{ sWidth = sHeight; sHeight = "8.5"; }
foreach (ReportDataSource ds in listDS)
{
localReport.DataSources.Add(ds);
}
HttpContextBase imageDirectoryPath = HttpContext;
string reportType = sReportType;
string mimeType;
string encoding;
string fileNameExtension;
//The DeviceInfo settings should be changed based on the reportType
string deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>" + sReportType + "</OutputFormat>" +
" <PageWidth>" + sWidth + "in</PageWidth>" +
" <PageHeight>" + sHeight + "in</PageHeight>" +
" <MarginTop>0.5in</MarginTop>" +
" <MarginLeft>0.5in</MarginLeft>" +
" <MarginRight>0.5in</MarginRight>" +
" <MarginBottom>0.5in</MarginBottom>" +
"</DeviceInfo>";
Warning[] warnings;
string[] streams;
byte[] renderedBytes;
//Render
renderedBytes = localReport.Render(
reportType,
deviceInfo,
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings);
//Write to the outputstream
//Set content-disposition to "attachment" so that user is prompted to take an action
//on the file (open or save)
Response.Clear();
Response.ContentType = mimeType;
Response.AddHeader("content-disposition", "attachment; filename=" + sFilename + "." + fileNameExtension);
Response.BinaryWrite(renderedBytes);
Response.End();
return File(renderedBytes, "application/pdf", sFilename + "." + fileNameExtension);
}
This code is responsible for sending the document to the client: 此代码负责将文档发送给客户端:
Response.Clear();
Response.ContentType = mimeType;
Response.AddHeader("content-disposition", "attachment; filename=" + sFilename + "." + fileNameExtension);
Response.BinaryWrite(renderedBytes);
Response.End();
Remove it and the user will not be prompted for save or open. 删除它,不会提示用户保存或打开。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.