111,120
社区成员
发帖
与我相关
我的任务
分享
byte[] buf = new WebClient().DownloadData(url);
//设置下载到本地文件完整路径
string fileName = localPath + webfileName + fileType;
FileStream fs = File.Open(fileName, FileMode.OpenOrCreate);
if (null != buf)
{
fs.Write(buf, 0, buf.Length);
fs.Close();
}
return fileName;
public void ExportReportGeneration(string queryJson)
{
//构造dynamic传入参数
dynamic queryObj = JsonConvert.DeserializeObject(queryJson);
queryObj.QueryType = "ReportGeneration";
var dataList = service.GetItemList(queryObj);
//生成和导出到Excel
MemoryStream stream = service.SaveReportGeneration(dataList, queryObj);
string file = string.Format("Export_{0}.xls", DateTime.Now.ToString(BaseFormat.DateTimeFormat));
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file, Encoding.UTF8)); //通知浏览器下载文件而不是打开
Response.BinaryWrite(stream.ToArray());
Response.Flush();
Response.End();
}
关键:
Response.AddHeader("Content-Disposition", "attachment; filename="
你根据要下载的数据 先临时生成个映射表呗。
比如
"1111.jpg"=>"AAA-BBB-CCC-DDD.jpg"
"2222.jpg"=>"BBB-AAA-CCC-DDD.jpg"
....
下载的url 肯定是 guid1.jpg,但是你能从数据库中查到它的原始名称。
要么 你 下载的时候 下载的是 buf 流。
然后 保存文件 的文件名 写 之前 数据库记录的就行了。 类似一个重命名。
byte[] buf = new WebClient().DownloadData("AAA-BBB-CCC-DDD.jpg");
这时候的 文件的内容 已经在 buf 里面了。
你只需要 把它保存为 你想要的名字就行了 比如 File.writeAllBytes("1111.jpg",buf);
就可以了,之后把 目录里面的文件打包就行了。
另外一个就是 你打包操作的时候 针对 压缩包进行操作。
比如 伪代码
Rar rar=new Rar();
rar.AddFile("1111.jpg",buf);<--这个时候 给这个数据集 新定一个文件名
rar.压缩();
rar.toBytes();