相关文章推荐
狂野的台灯  ·  Scala数组-CSDN博客·  7 月前    · 
小眼睛的热带鱼  ·  ICommand 介面 ...·  1 年前    · 
酷酷的排球  ·  What does '=\' ...·  1 年前    · 
酒量大的洋葱  ·  javascript - What is ...·  1 年前    · 
/// 下载文件 LastUpdateDate:2021-07-14 18:25:03.811 Author:Lingbug /// </summary> /// <returns></returns> [ HttpPost , AllowAnonymous ] public IActionResult DownloadFile ( ) //文件地址 var fileUrl = Request . Form [ "fileUrl" ] . ToString ( ) ; if ( fileUrl . IsNullOrWhiteSpaceString ( ) ) throw new ErpFriendlyException ( "要下载的文件地址不能为空!" ) ; //文件路径 string filePath = FileUtil . GetFullPath ( fileUrl ) ; if ( ! System . IO . File . Exists ( filePath ) ) throw new ErpFriendlyException ( "要下载的文件不存在!" ) ; //新文件 var copyFile = new SaveFileOutput ( Path . GetFileName ( filePath ) , SaveFileOutputFileNameTypeEnum . TimeStamp , "UploadFiles" , "DownloadFile" , "Copy" ) ; //复制文件 System . IO . File . Copy ( filePath , copyFile . FileFullPath , true ) ; //文件名 var fileName = Request . Form [ "fileName" ] . ToString ( ) ; //文件名 if ( fileName . IsNullOrWhiteSpaceString ( ) ) fileName = Path . GetFileName ( filePath ) ; return new FileStreamResult ( new FileStream ( copyFile . FileFullPath , FileMode . Open ) , "application/octet-stream" ) { FileDownloadName = fileName . TrimStr ( ) } ;

Client Code

<! DOCTYPE html > < meta name = " viewport " content = " width=device-width " /> < title > @ViewBag.Title </ title > </ head > < div id = " app " > < input type = " button " value = " 测试下载 " id = " btnTestDownload " /> < form id = " fileForm " action = " " method = " post " > < input id = " fileName " name = " fileName " value = " " /> < input id = " fileUrl " name = " fileUrl " value = " " /> < input type = " submit " value = " 提交 " id = " btnDownload " /> </ form > </ div > </ body > </ html > < script src = " ~/lib/jquery-3.4.1.min.js " > </ script > < script src = " ~/Scripts/lingbugUtil.js " > </ script > < script > $ ( function ( ) { $ ( '#btnTestDownload' ) . click ( function ( ) { //api地址 var host = 'http://localhost:55992' ; //api地址 document . getElementById ( 'fileForm' ) . setAttribute ( 'action' , host + '/erpApi/LevoxErpBase/DownloadFile' ) ; //要下载的文件路径 document . getElementById ( 'fileUrl' ) . value = '/LevoxFiles/UploadFiles/Temp/外出质检报告202102020003_20210609095346218_2.jpg' ; //要下载下来的文件名 document . getElementById ( 'fileName' ) . value = 'lingbug.jpg' ; document . getElementById ( 'btnDownload' ) . click ( ) ; } ) ; } ) ; </ script > .Net5 WebApi中下载文件(返回FileStreamResult)WebApi CodeClient CodeWebApi Code /// &lt;summary&gt; /// 下载文件 LastUpdateDate:2021-07-14 18:25:03.811 Author:Lingbug /// &lt;/summary&gt; /// &lt;returns&gt;&lt;/returns&gt; MultipartFormDataContent构造参数和 文件 对象 public async Task<Action Result <dynamic>> UploadTestAsync() var fileAdd = @"D:\UploadReport\ 国调查报告-张某某(绿灯).doc";
如果我想在 ASP .Net Web API 返回 File 文件 ,我目前的做法是将 Action 返回 值设为HttpResponseMessage,参考代码如下: publicasyncTask<HttpResponseMessage>DownloadAsync(stringid) varresponse=newHttpResponseMessage(HttpStatusCode.OK); response.Content=newStreamCo...
经过简单的调研,得到以下结论。 ASP .NET CORE 提供File Result 这种类型的Action Result ,可以直接 返回 文件 结果,不需要直接处理HttpResponse。 通过Stream可以直接 返回 ... MVC Action Result 是Action的 返回 结果。Action Result 有多个派生类,每个子类功能均不同,并不是所有的子类都需要 返回 视图View,有些直接 返回 流,有些 返回 字符串等。Action Result 是一个抽象类,它定义了唯一的Execute Result 方法,参数为一个ControllerContext,下面为您介绍MVC 的Action Result 的用法 二、什么...
在项目 用到 文件 下载 功能,用的是 FileStream Result 方法: return File(new FileStream (path, FileMode.Open), Utilities.MimeType(fileName), fileName); 下载 普通 文件 都正常,测试时发现 下载 含有 文名的word和excel 文件 时直接 返回 了方法的名称,后来查了很多资料,终于找到解决办...
使用ASP .NET MVC 3 RC2 的时候发现,这样的代码在一些情况下总是无法 返回 正确的结果(理论上来说前几个版本也存在这种可能): MemoryStreamms=xxxx;//图片类型returnFile(ms,"image/jpeg"); 跟踪了一下File的结果,确实已经有数据,但是无法在页面上 返回 (此时File重写方法 返回 的是FileSreamResu...
//写入到响应流 smallimg.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); //保存到本地 smallimg.Save(context.Reques...
.NET Core Web API 文件 下载 可以通过设置controller的response类型来完成。在controller方法 ,使用File方法指定需要 下载 文件 路径和 下载 后的 文件 名等信息,然后将其作为response 返回 即可。例如: [HttpGet] public IAction Result DownloadFile() var filePath = "path/to/file"; var fileName = "file name"; return File(filePath, "application/octet-stream", fileName); 其 ,第一个参数是 文件 路径,第二个参数是MIME类型,这里设置为“application/octet-stream”表示二进制流,第三个参数是 文件 名称。 返回 文件 会自动被 下载 到本地磁盘上。
WebApi过滤器:AuthorizationFilterAttribute -> ActionFilterAttribute -> ExceptionFilterAttribute
记一次VS2022升级.Net7导致原来的.Net6项目编译失败,最后不断排查直到解决的思路与心得【错误编码:NETSDK1045】(sdk排查 -> 分析器排查 -> VS2022升级日志排查) Lingbug: 生成的manifest是没问题的,我在升级2022前,都是可以的,升级后就不行了,升级过程会自动初始化分析器位置,所以我要修改分析器的解析位置,解析我装sdk的文件夹。 记一次VS2022升级.Net7导致原来的.Net6项目编译失败,最后不断排查直到解决的思路与心得【错误编码:NETSDK1045】(sdk排查 -> 分析器排查 -> VS2022升级日志排查) 小超wuli: 难不是路径或配置的 manifest 有没有排错 C#获取当前方法信息,上端调用方方法信息以及方法调用链 为啥调用方的方法是‘MoveNext’? .Net中使用Castle进行IOC+AOP(动态注入+代理) LanPst: CastleRegister 的 Register方法在哪里调用呢? 记一次VS2022升级.Net7导致原来的.Net6项目编译失败,最后不断排查直到解决的思路与心得【错误编码:NETSDK1045】(sdk排查 -> 分析器排查 -> VS2022升级日志排查) c#Enumerable集合的Aggregate扩展方法的三个重载 C#通过表达式树解析出sql语句