希望某类或者某已知MIME 类型的文件(比如:.gif;.txt;*.htm)能够在访问时弹出“文件下载”对话框 希望以原始文件名(上传时的文件名,例如:山东省政府1024号文件.doc)提供下载,但服务器上保存的地址却是其他文件名(如:12519810948091234_asdf.doc) 希望某文件直接在浏览器上显示而不是弹出文件下载对话框 ……………………
近日在使用Content-disposition的使用出现UTF-8识别不了的情况,经过HttpUtility.UrlEncode(fileName,Encoding.UTF8)编码后的文件名称直接显示给用户了,如图:
新建一个 asp dotnet core 程序,创建一个新的类,用于给客户端上传文件的信息
改造了网上的代码,可以压缩文件夹、指定文件列表(文件和文件夹的混合列表,需要指定子文件夹下需要压缩的文件),注释很详细不做解释
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/40785429
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
乱码: 产生乱码的原因:就是你打开保存这个文件所采用的编码,和你打开这个文件所采用的编码格式不一样。
/// /// 文件压缩类 /// public class ZipHelper { /// /// 单文件压缩成ZIP /// /// <param name="fileSource">源文件路径</param> /// <param name="fileOut">ZIP文件路径</param> /// <param name="fileName">ZIP文件名:相对路径</
public class IoHelper { /// /// 判断文件是否存在 ///
本文主要讨论FileInfo,DirectoryInfo和FileSystemInfo三个类。
SaveFileDialog saveExcel = new SaveFileDialog();//实例化SaveFileDialog
终端实现大文件上传一直都是比较难的技术,其中涉及到后端与前端的交互,稳定性和流量大小,而且实现原理每个人都有自己的想法,后端主流用的比较多的是Http来实现,因为大多实现过断点下载。但稳定性不能保证,一旦断开,无法续传。所以得采用另一种流行的做法,TCP上传大文件。 网上查找了一些资料,大多数是断点下载,然后就是单独的C#端的上传接收,或是HTTP的,或是只有android端的,由于任务紧所以之前找的首选方案当然是Http先来实现文件上传,终端采用Post方法,将文件直接传至后端,后端通过File来获得。
然后创建响应头,指定响应的类型,同时也可以使用Content-Disposition设置浏览器下载时需要保存的文件名
string filePath = Server.MapPath(“”);//路径
文件上传和下载是Web应用程序中常见的功能之一。Struts2作为一个优秀的Java Web框架,提供了便捷的方式来实现文件上传和下载功能。本文将以实战为主,介绍如何在Struts2应用中实现文件上传和下载功能。
摘要: 文件操作是程序中非常基础和重要的内容,而路径、文件、目录以及I/O都是在进行文件操作时运维
C#如何释放已经加载的图片,图片如果加载了不释放不解除占用会导致图片无法修改,包括改名和覆盖都不行。
js代码 var Arrurl = [{ "name": "尽职调查.pdf" }, { "name": "简介.pdf" }, { "name": "信托合同.pdf" }]; //ajax调用ashx $.ajax({ type: 'post', url: "../DownZip.ashx", data: { url: JSON.stringify(Arrurl), //需打包文件的文件名拼接json数组 GoodsN
一、写入 //在应用程序当前目录下的File1.txt文件中追加文件内容,如果文件不存在就创建,默认编码 File.AppendAllText("Fil
一、API解读 1 GridFSBucketOptions 1)public string BucketName { get; set; } 获取或设置bucket名称 2)public int ChunkSizeBytes { get; set; } 获取或设置块的字节大小 3)public ReadConcern ReadConcern { get; set; } 获取或设置读关注 4)public ReadPreference ReadPreference { get; set; } 获取或设置读优先
{ /* 微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite 下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。 代码如下: */ Response.ContentType = "application/x-zip-compressed"; Response.AddHeader("Content-Disposition", "attachment;filename=z.zip"); string filename = Server.MapPath("DownLoad/aaa.zip"); Response.TransmitFile(filename); } //WriteFile实现下载 protected void Button2_Click(object sender, EventArgs e) { /* using System.IO; */ string fileName ="aaa.zip";//客户端保存的文件名 string filePath=Server.MapPath("DownLoad/aaa.zip");//路径 FileInfo fileInfo = new FileInfo(filePath); Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); Response.AddHeader("Content-Length", fileInfo.Length.ToString()); Response.AddHeader("Content-Transfer-Encoding", "binary"); Response.ContentType = "application/octet-stream"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.WriteFile(fileInfo.FullName); Response.Flush(); Response.End(); } //WriteFile分块下载 protected void Button3_Click(object sender, EventArgs e) { string fileName = "aaa.zip";//客户端保存的文件名 string filePath = Server.MapPath("DownLoad/aaa.zip");//路径 System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath); if (fileInfo.Exists == true) { const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力 byte[] buffer = new byte[ChunkSize]; Response.Clear(); System.IO.FileStream iStream = System.IO.File.OpenRead(filePath); long dataLengthToRead = iStream.Length;//获取下载的文件总大小 Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName)); while (dataLengthToRead > 0 && Response.IsClientConnected) { int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小 Response.OutputStream.Write(buffer, 0, lengthRead); Response.Flush(); dataLengthToRead = dataLengthToRead - lengthRead; } Response.Close(); } } //流方式下载 protected void Button4_Click(object sender, Eve
1、public override void Write(string value) //将字符串写入流。
转载:http://blog.csdn.net/kevonz/article/details/5078432
ICSharpCode.SharpZipLib.dll是一个压缩的类库,似乎不是微软提供的
ICSharpCode.SharpZipLib.dll 是一个基于GNU的免费库文件,他的功能很强大。
FileResult是一个基于文件的ActionResult,利用FileResult我们可以很容易地将从某个物理文件的内容响应给客户端。ASP.NET MVC定义了三个具体的FileResult,分
类BufferedStream就是给另一流上的读写操作添加一个缓冲区。缓冲区是内存中的字节块,用于缓存数据,从而减少对操作系统的调用次数。因此,缓冲区可提高读取和写入性能。使用缓冲区可进行读取或写入,但不能同时进行这两种操作。BufferedStream 的Read和Write方法自动维护缓冲区的读写过程。
两种方式都是,浏览器(前端)点击导入按钮,弹出文件选择框,点击文件选择打开,此时前端拿到该文件的文件流(或者fileItem对象),作为参数传递给后端。 后端拿到参数,以字符串分割的方式或者fileItem类里面的方法,拿到后端需要的文件流以及文件名。
//C#文件流写文件,默认追加FileMode.Append string msg = “okffffffffffffffff”; byte[] myByte = System.Text.Encoding.UTF8.GetBytes(msg); using (FileStream fsWrite = new FileStream(@”D:\1.txt”, FileMode.Append)) { fsWrite.Write(myByte, 0, myByte.Length); }; //c#文件流读文件 using (FileStream fsRead = new FileStream(@”D:\1.txt”, FileMode.Open)) { int fsLen = (int)fsRead.Length; byte[] heByte = new byte[fsLen]; int r = fsRead.Read(heByte, 0, heByte.Length); string myStr = System.Text.Encoding.UTF8.GetString(heByte); Console.WriteLine(myStr); Console.ReadKey(); }
本文告诉大家如何在 UWP 做客户端和 asp dotnet core 做服务器端来做一个图床工具
IRIS提供了一个类%Net.FtpSession,可以使用它从InterSystems IRIS内建立与FTP服务器的会话。
对单元测试的描述大家可自行百度,后期时间满足的情况下,我在对单元测试进行一个单独的专题进行说明,这一节主要就是介绍一下简单的用法。
文件 ---- 文件 是一个存储在磁盘中带有指定名称和目录路径的数据集合。当打开文件进行读写时,它变成一个流。 从根本上说,流是通过通信路径传递的字节序列。有两个主要的流:输入流 和输出流。输入流用于从文件读取数据(读操作),输出流用于向文件写入数据(写操作)。 System.IO.File类和System.IO.FileInfo类主要提供用于执行各种文件的操作,如创建和删除文件、读取或写入文件,打开或关闭文件等。另外有时我们还会用到System.IO.Path类、Directory类等,在使用时要
StreamSaver.js 可用于实现在Web浏览器中直接将大文件流式传输到用户设备的功能。
FileStream 目录: 如何去理解FileStream? FileStream的重要性 FileStream常用构造函数(重要) 非托管参数SafeFileHandle简单介绍 FileStre
在winform的开发过程中往往会有这样的应用场景,执行完成某任务之后,程序需要把本身删除掉。比如卸载。分享一个比较简单实现。
带进度的文件复制器 基本原理就是通过Stream的BeginRead来异步复制文件,同时刷新进度条的状态 代码 读取文件的指定行 1、通过StreamReader的Readline 通过S
在进行访问文件的时候,可能会因为文件的路径太长无法创建访问文件 本文告诉大家如何支持长路径的读写
摘要:上篇文章写到一种上传图片的方法,其中提到那种方法的局限性,就是上传的文件只能保存在本项目目录下,在其他目录中访问不到该文件。这与浏览器的安全性机制有关,浏览器不允许用户用任意的路径访问服务器上的资源,因为这可能造成服务器上其他位置的信息被泄露。浏览器只允许用户用相对路径直接访问本项目路径下的资源。那么,如果A项目要访问B项目上传的文件资源,这就产生问题了。所以这就需要另外一种方法来解决这个问题,那就是通过 流(Stream)的形式上传和下载文件资源。这种方法因为不是通过路径直接访问文件,而是先把文件读取的流中,然后将流中的数据写入到新的文件中,还原需要上传的文件,所以也就不存在上面的问题了。本片博客,着重介绍一下这种方式的实现。
使用NPOI导入导出excel,已经封装好Action可以直接调用 导出 效果图 使用方法 定义导出实体 class Student { public int Id { get; set; }
项目中的文件操作,要求将项目中添加的文件放到项目输出目录下。 首先将文件拖拽到项目目录下。然后如下操作:
/// <para> FilesUpload:工具方法:ASP.NET上传文件的方法</para> /// <para> FileExists:返回文件是否存在</para> /// <para> IsImgFilename:判断文件名是否为浏览器可以直接显示的图片文件名</para> /// <para> CopyFiles:复制指定目录的所有文件</para> /// <para> MoveFiles:移动指定目录的所有文件</para> /// <para> D
第一次自主封装Util类,尝试封装一个日志的操作类LogUtil,逻辑不复杂,也没调用那些复杂的类,只是简单的IO操作。 1 using System; 2 using System.IO; 3 4 namespace Common 5 { 6 /// 7 /// 日志类 8 /// 9 public static class LogUtil 10 { 11 /// <
消息服务框架使用案例之--大文件上传(断点续传)功能 一、分块上传和断点续传原理 在我们的一个产品应用中,客户需要上传大量的文件到服务器,其中不乏很大的视频文件。虽然可以使用FTP这样成熟稳定的工具,但客户表示不会使用FTP工具,并且我们产品也觉得客户从我们软件在切换到FTP用户体验不好,如果做成后台脚本调用FTP上传那么进度信息很难呈现到我们软件上。最终,决定我们自己做文件上传功能。 大文件上传受限于服务器每次处理数据的能力,不能一次传输完成,所以分块上传是必然的了,由于上传时间可能较长,中途可能
通过前3章的学习相信大家对于Stream已经有一定的了解,但是又如何去理解FileStream呢?http://tudou.fzl1314.com 请看下图
个人分享 public void test() { //ftp服务器路径 string ftpServer = "ftp://192.168.0.1/"; //ftp本地路径 string ftpDefaultUrl = "/A"; //登入到ftp的账号 string ftpUserName = "anonymous";
领取专属 10元无门槛券
手把手带您无忧上云