当前位置: 首页 > 编程语言 > C#

ASP.NetCore内容-处理附件-内联Share

时间:2023-04-11 00:49:07 C#

ASP.NetCore内容-处理附件/内联我正在从WebAPI控制器返回一个文件。Content-Disposition标头值自动设置为“附件”。例如:人物:附件;文件名=“30956.pdf”;filename*=UTF-8"30956.pdf当设置为附件时,浏览器会要求保存文件而不是打开它。我想打开它。如何将它设置为“内联”而不是“附件”?我使用此方法发送文件:publicIActionResultGetDocument(intid){varfilename=$"folder/{id}.pdf";varfileContentResult=newFileContentResult(File.ReadAllBytes(filename),"application/pdf"){FileDownloadName=$"{id}.pdf"};//我需要在我之后删除文件System.IO.File.Delete(filename);returnfileContentResult;}我发现最好的方法是添加内容-手动配置标头。privateIActionResultGetFile(intid){varfile=$"folder/{id}.pdf";//响应...System.Net.Mime.ContentDispositioncd=newSystem.Net.Mime.ContentDisposition{FileName=file,Inline=displayInline//false=提示用户下载;true=浏览器尝试显示内联文件};Response.Headers.Add("Content-Disposition",cd.ToString());Response.Headers.Add("X-Content-Type-Options","nosniff");返回文件(System.IO.File.ReadAllBytes(文件),“应用程序/pdf”);鉴于您不想一次读取字节数组文件中的内存(使用各种File(byte[]...)重载或使用FileContentResult),您可以使用File(Stream,string,string)重载,其中最后一个参数表示文件的下载名称:returnFile(stream,"content/type","FileDownloadName.ext");或者,您可以利用支持流的现有响应类型(例如FileStreamResult,并在FileStreamResult上设置内容处置。与在FileResultExecutorBase中一样,执行此操作的规范方法是在操作方法中自己设置响应的标头://使用文件名的正确编码设置内容配置标头varcontentDisposition=newContentDispositionHeaderValue("attachment");内容处置。SetHttpFileName("文件下载名称.ext");Response.Headers[HeaderNames.ContentDisposition]=contentDisposition.ToString();//返回实际的文件流returnnewFileStreamResult(@"pathtofile","content/type");由于File()将忽略Content-Disposition我使用了这个:返回新的FileContentResult(System.IO.File.ReadAllBytes(filePath),"application/pdf");它有效:-)尝试使用HttpResponseMessagepublicIActionResultGetDocument(intid){varfilename=$"folder/{id}.pdf";Response.Headers["Content-Disposition"]=$"inline;filename={id}.pdf";varfileContentResult=new文件内容entResult(System.IO.File.ReadAllBytes(filename),"application/pdf"){FileDownloadName=$"{id}.pdf"};//我需要在我之后删除文件System.IO.File.Delete(filename);返回文件内容结果;使用AspNetCoreAspNetCore.Mvc版本和AspNetCore.Mvc,我发现以前的答案都不可接受。对我来说,简单地省略File的文件名参数就足以触发内联内容处理。返回文件(文件流,内容类型,文件名);//附件returnFile(fileStream,contentType);//内联Asp.NetMVC方法使用与ashley-lee类似的方法注意:Chrome将下载附件。请参阅Ctrl-J列表。但是,如果用户选择“打开”,它将在“浏览器”中打开,用户必须选择“在系统查看器中打开”。例如,PDF签名字段在基于浏览器的PDF查看器中不可见。以上就是C#学习教程:ASP.NetCore内容-处理附件/内联分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——[HttpGet]publicActionResultGenericForm(){returnnewDownloadFileAsAttachmentResult(@"GenericForm.pdf",@"ContentfilesGenericForm.pdf","应用程序/pdf");}publicclassDownloadFileAsAttachmentResult:ActionResult{privatestring_filenameWithExtension{get;放;}privatestring_filePath{得到;放;}privatestring_contentType{得到;放;}//false=提示用户下载;true=浏览器尝试以内联方式显示文件privateconstboolDisplayInline=false;publicDownloadFileAsAttachmentResult(stringFilenameWithExtension,stringFilePath,stringContentType){_filenameWithExtension=FilenameWithExtension;_filePath=文件路径;_contentType=内容类型;}publicoverridevoidExecuteResult(ControllerContextcontext){HttpResponseBaseresponse=context.HttpContext.Response;响应.Buffer=false;响应.ContentType=_content类型;response.AddHeader("Content-Disposition","attachment;filename="+_filenameWithExtension);//强制下载response.AddHeader("X-Content-Type-Options","nosniff");响应.TransmitFile(_filePath);}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: