服务器文档下载zip格式
刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚。开始吧。(MVC的)
@using Rattan.Core.Utility;
@{
string ButtonScript = string.Empty;
}
@if (Rattan.Basic.Globals.GetIsAuth(ViewBag.AuthValues, "QuickExport"))
{
ButtonScript = @"
{
position: 0,
id: 'btnQuickExport',
text: '导出稿件附件',
disabled: false,
icon: 'pwd.gif',
handler: function ()
{
QuickExport();
}
}";
}
<script type="text/javascript" language="javascript">
helper.onBeforePageLoad = function (params) {
}
helper.onAfterPageLoad = function () {
m_grid.insertToolBar(
[
@Html.Raw(ButtonScript)
]);
}
</script>
<script type="text/javascript" language="javascript">
function QuickExport() {
// var rows = m_grid.getSelections(); ---这个是不打包,一个个跳出来的,没卵用,当时应付的
// $.each(rows, function (i, row) {
// var url = row.filelist + "?" + Math.random();
// window.setTimeout(function () {
// window.open(url, "_blank");
// }, 1000);
// });
var rows = m_grid.getSelections();
var Draft_Id_Array = [];
$.each(rows, function (i, row) {
Draft_Id_Array.push(row.Draft_Id);
});
if (!Draft_Id_Array.length) {
alert("至少选中一行!");
return;
}
var url = "/BasicInfo/Meeting_Draft/ZipFileByCode";
var postParams = {
Draft_Ids: Draft_Id_Array.join(',')
};
window.open(url + '?Draft_Ids=' + Draft_Id_Array.join(','))
}
</script>
/// <summary>
/// 压缩打包文件
/// </summary>
public ActionResult ZipFileByCode(string Draft_Ids)//string Draft_Id
{
MemoryStream ms = new MemoryStream();
byte[] buffer = null;
using (ZipFile file = ZipFile.Create(ms)) //压缩包创建到内存
{
file.BeginUpdate();
file.NameTransform = new IndexController();//通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。
string where = "Draft_Id in (" + Draft_Ids + ")";
var draftInfo = Meeting_DraftRepository.Instance.GetMany(where).ToList();
foreach (var draftInfoList in draftInfo)
{
if (string.IsNullOrWhiteSpace(draftInfoList.filelist) || draftInfoList.filelist.IndexOf('/') < 0)
{
continue;
}
var positonIndex = draftInfoList.filelist.LastIndexOf('/');
string fileName = draftInfoList.filelist.Substring(positonIndex, draftInfoList.filelist.Length - positonIndex);//客户端保存的文件名
file.Add(Server.MapPath(draftInfoList.filelist));
}
file.CommitUpdate();
buffer = new byte[ms.Length];
ms.Position = 0;
ms.Read(buffer, 0, buffer.Length);
}
//将中文转换预防出现乱码
string excelName = "稿件附件".ToString();
excelName = HttpUtility.UrlEncode(excelName, System.Text.Encoding.UTF8);
DateTime dt = DateTime.Now;
Response.AddHeader("content-disposition", "attachment;filename=" + excelName + DateTime.Now.ToString("yyyyMMdd")+ ".zip");
Response.BinaryWrite(buffer);
Response.Flush();
Response.End();
return View();
}
}
服务器文档下载zip格式的更多相关文章
- 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理
服务器文档下载zip格式 刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...
- 关于springmvc下服务器文件打包成zip格式下载功能
关于springmvc下服务器文件打包成zip格式下载功能 2016年09月21日 11:22:14 toxic_guantou 阅读数:5731更多 个人分类: 技术点存储 版权声明:本文为博主 ...
- DevExpress v15.2.4帮助文档下载(全)
原文地址:http://www.devexpresscn.com/Resources/Documentation-498.html DevExpress v15.2帮助文档下载列表大全来啦!包含.ne ...
- 自己总结的C#编码规范--7.文档下载 & 总结
今天终于把这一系列的编码规范写完了,这个编码规范算上前面阅读相关书籍,前前后后总共花了一个月的时间,也算是个人的呕心沥血之作了. 本来也没打算把这个系列写的这么长,但是在写的过程中自己搜了相关的网上资 ...
- 干货分享!DevExpress v17.1最新版帮助文档下载大全
DevExpress v17.1.5帮助文档下载列表大全来啦!包含.NET.VCL.HTML/JS系列所有帮助文档,提供CHM和PDF两个版本.除已停止更新的Silverlight.Windows 8 ...
- DevExpress v18.1最新版帮助文档下载大全
DevExpress v18.1.4帮助文档下载列表大全来啦!包含.NET.VCL.HTML/JS系列所有帮助文档,提供CHM和PDF两个版本.除已停止更新的Silverlight.Windows 8 ...
- DevExpress v17.2最新版帮助文档下载大全
DevExpress v17.2.4帮助文档下载列表大全来啦!包含.NET.VCL.HTML/JS系列所有帮助文档,提供CHM和PDF两个版本.除已停止更新的Silverlight.Windows 8 ...
- ext 文档下载地址
ext官方太鬼了,离线文档下载地址藏的太深了,找出来真不容易 http://docs.sencha.com/misc/guides/offline_docs.html
- web开发--文档下载
GOOGLE在线文档下载地址分享(GOOGLE的文档地址暂不能用了,会放在其它位置..) GOOGLE的在线文档功能好象挂掉了...等找个其它存放的位置把这些文档再上传上去... 存在GOOGLE里面 ...
随机推荐
- noip第29课资料
- js 原型链解密
1.对象继承 javaScript的继承不是通过class实现的,而是通过“原型对象”(prototype). 1.每一个函数都有一个原型对象 2.每一个实例对象都有一个_proto_属性 2.原型链 ...
- jQuery-实现图片轮播
html部分: <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <ti ...
- 【Java】利用注解和反射实现一个"低配版"的依赖注入
在Spring中,我们可以通过 @Autowired注解的方式为一个方法中注入参数,那么这种方法背后到底发生了什么呢,这篇文章将讲述如何用Java的注解和反射实现一个“低配版”的依赖注入. 下面是我们 ...
- Ajax原理与封装详解
Ajax大家每天都在用,jquery库对Ajax的封装也很完善.很好用,下面我们看一下他的内部原理,并手动封装一个自己的Ajax库. 更多有关ajax封装及数据处理,请参看上海尚学堂<Ajax中 ...
- 虚拟机安装mysql
安装mysql8.0方法: 1.首先,ubuntu安装mysql8.0(此版本比较好装),所以要先更新一下源,去MySQL官网http://dev.mysql.com/downloads/repo/ ...
- 使用idea配置tomcat将web项目跑起来
链接:https://www.cnblogs.com/avivaye/p/6437555.html
- Python - 使用Setuptools进行程序打包
1- Setuptools简介 通过Setuptools可以更方便的创建和发布Python包,特别是那些对其它包具有依赖性的状况: Python打包用户指南(Python Packaging User ...
- mysql 开发进阶篇系列 45 物理备份与恢复(xtrabackup 安装,用户权限,配置)
一. 安装说明 安装XtraBackup 2.4 版本有三种方式: (1) 存储库安装Percona XtraBackup(推荐) (2 )下载的rpm或apt包安装Percona XtraBacku ...
- Android布局:宽度适应的横向跟随,防止挤掉重要视图
不知道这样的布局该怎么描述,标题也是乱取的..直接上图吧 最近遇到了这样要求的布局: 1.上图中的“标题”长度不定,“状态”标签可能有多个并紧跟在标题右边,“属性”一直居右显示: 2.当“标题”过长, ...