//这是导出的js方法

function fundaochu() {
var data = "keyword=GetImageListdaochu&type=daochu&modality=" + $(eventRow).attr("study_date") + "&strWhere=a.REGISTRATION_ID=" + $(eventRow).attr("reg_id") + " and a.modality='" + $(eventRow).attr("modality") + "' order by INSTANCE_NUMBER DESC";
var renamefunc = function (msg) { if (msg != null && msg != "") {
//我是通过一个固定地址,然后把形成的压缩包的名字传到前台来,然后通过固定地址加上zip的名字然后下载
var name = unescape(msg);
//这是当最后一位数传过来的是2的时候,就证明没有文件需要下载,弹出该人物没有图像可供下载
if (name.substring(name.length - 1, name.length) == "2") {
alert(name.substring(0, name.length - 1));
}
else {
//传过来的数据必须去掉最后一位,因为最后一位我是拼接了个1或者2,1是有数据可以下载,2是无数据可以下载
var newname = name.substring(0, name.length - 1);
//通过一个新的页面把这个zip文件打开下载
var fileURL = window.open("../linshi/" + newname + ".zip", "_blank", "height=0,width=0,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no");
//var fileURL = window.open("../lishi", "_blank", "height=0,width=0,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no");
//紧接着关闭这个小页面
fileURL.window.close();
fileURL.close();
//这是最终下载的代码
fileURL.document.execCommand("SaveAs"); } } };
CommonAjax(renamefunc, null, data);
}

  

//这是图片下载转换的方法
public string getImgdaochu(HttpRequest request)
{
PATS_DAL dall = new PATS_DAL();
try
{
string url = string.Empty;
string zipname = string.Empty;
string tupian_url = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString();
string where = request.Params["strWhere"].ToString();
string type = request.Params["type"].ToString();
HttpContext context = HttpContext.Current;
//每次下载的时候都会把文件放到这个文件夹下然后前台通过这个地址进行下载,所以我每次都会删除上次导出时候创建的文件夹,然后在重新创建,这样做的效果就是这个文件夹里永远只有一个最新的文件;
//这里放的是jpeg格式的图片,因为我从服务器上获取的不是jpeg的文件,是dicm的文件,我需要把这个dicm文件转换成jpeg转换成之后,我需要临时存放到这个文件夹里面以备后面压缩。
string weburl = "d:\\webtupian";
if (Directory.Exists(weburl))
{
DirectoryInfo direct = new DirectoryInfo(weburl);
direct.Delete(true);
}
//这个是压缩包zip存放的地方
string lurl = HttpContext.Current.Server.MapPath("../linshi");
if (Directory.Exists(lurl))
{
DirectoryInfo direct1 = new DirectoryInfo(lurl);
direct1.Delete(true);
}
string modality = "";
if (request.Params["modality"] != null && request.Params["modality"].ToString() != "")
{
modality = request.Params["modality"].ToString();
}
//获取特定的数据集信息
DataSet ds = dall.getimgdaochu(where, modality);
StringBuilder html = new StringBuilder(); string zipedFile = string.Empty;
List<Byte[]> lstFI = new List<Byte[]>();
List<string> listimage = new List<string>();
byte[] img = null;
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
int i = 1;
foreach (DataRow row in ds.Tables[0].Rows)
{
context.Response.ClearContent();
string dcm_path = row["REFERENCE_FILE"].ToString();//这是dicm文件的地址
string share_ip = SYS_APP_CONFIG.GetAppConfigValue("dcm_share_ip");//这是服务器的ip地址
zipedFile = row["PATIENT_ID"].ToString();//这是数据的编号。
string tuname = row["PATIENT_NAME"].ToString();//这是当前这个数据人的名字
img = DicomUtility.GetJpegFromDcm(dcm_path, System.Drawing.Imaging.ImageFormat.Jpeg);//这是通过dicm文件的地址和ip什么的,把dicm文件转换成图片格式的byte字节。
Image imgg = BytToImg(img);//这是通过byte字节获取jpeg的图片
zipname = tupian_url + tuname + i.ToString() + "张";//压缩zip的名字
url = "d:\\webtupian";
if (!Directory.Exists(url))
{
Directory.CreateDirectory("d:\\webtupian");//创建新路径
}
string name = tuname + i.ToString();
imgg.Save("d:\\webtupian" + "/" + name + ".jpeg");//图片保存
listimage.Add("d:\\webtupian" + "/" + name + ".jpeg");//把当前图片保存的路径保存起来,用于后面的zip通过路径压缩文件。
i++;
imgg.Dispose();
}
//压缩成zip,需要下载ionic的dll然后引用。
//zipname这个是zip的名字
using (Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile(zipname, Encoding.Default))
{
foreach (string fileToZip in listimage)
{
using (FileStream fs = new FileStream(fileToZip, FileMode.Open, FileAccess.ReadWrite))//根据路径把文件转换成文件流
{
byte[] buffer = new byte[fs.Length];//把文件流转换成byte字节
fs.Read(buffer, 0, buffer.Length);
string fileName = fileToZip.Substring(fileToZip.LastIndexOf("\\") + 1);
zip.AddEntry(fileName, buffer);
}
}
if (!Directory.Exists(HttpContext.Current.Server.MapPath("../linshi")))
{
Directory.CreateDirectory(HttpContext.Current.Server.MapPath("../linshi"));//创建新路径
}
zip.Save(HttpContext.Current.Server.MapPath("../linshi/" + zipname + ".zip"));
}
//为了防止乱码,把数据封装了一下,到前台用unescape()解析就可以了。
return Microsoft.JScript.GlobalObject.escape(zipname + "1");//返回zip的名字和拼接的字符串1,1是代表有数据可以导出
}
else
{
return "当前该人员没有图片可供导出。2";
}
}
catch (Exception e)
{
Utility.LOG.ERRORLOG.Add(2, e, "", RisConfig.pacsAppVer);
return "非常抱歉,系统出现错误!具体请查看PACS错误日志列表!2";
}
}

  

asp.net 把图片压缩成zip之后再进行下载的更多相关文章

  1. java 实现Excel压缩成Zip导出

    1 概述 在web项目中常见的一种场景就是将文件导出为Excel,但是当需要导出多个Excel时,使用者将频繁操作,这样就严重降低了项目的友好交互性以及易用性,那么怎么才能优雅的解决这个问题呢?笔者今 ...

  2. Java实现将文件或者文件夹压缩成zip

            最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类.         这个工具类的功能为: ( ...

  3. vue-webpack项目自动打包压缩成zip文件批处理

    为什么需要这个? 使用vue框架开发项目,npm run build这个命令会一直用到,如果需要给后端发包,那你还要打包成zip格式的压缩包,特别是项目提测的时候,一天可能要执行重复好几次,所以才有了 ...

  4. java实现将文件压缩成zip格式

    以下是将文件压缩成zip格式的工具类(复制后可以直接使用): zip4j.jar包下载地址:http://www.lingala.net/zip4j/download.php package util ...

  5. linux下压缩成zip文件解压zip文件

    linux  zip命令的基本用法是: zip [参数] [打包后的文件名] [打包的目录路径] linux  zip命令参数列表: -a     将文件转成ASCII模式 -F     尝试修复损坏 ...

  6. 【转】Java实现将文件或者文件夹压缩成zip

    转自:https://www.cnblogs.com/zeng1994/p/7862288.html package com.guo.utils; import java.io.*; import j ...

  7. PPT文件流转为图片,并压缩成ZIP文件输出到指定目录

    实现流程: 接收InputStream流->复制流->InputStream流转为PPT->PPT转为图片->所有图片压缩到一个压缩文件下 注意: 1.PPT文件分为2003和 ...

  8. Vue -- webpack 项目自动打包压缩成zip文件

    这段时间用 Vue2.0 开发项目,每次打包都会用到 npm run build 命令,但是每次部署时给后端发包都要手动zip压缩,这样一两次还行,但遇到项目板块测试和临时加急功能测试的时候,一天可能 ...

  9. 怎么将一张100KB以上大小的电子图片压缩成30KB以内

    不多说,直接上干货! 方法一: 怎么将一张100KB以上大小的电子照片压缩成30KB以内. 先将这张100KB以上大小的电子照片,新建一个word,放入.选中照片,右击,另存为,格式依然还是选择.jp ...

随机推荐

  1. 设置core环境

    void dummy_function (void){ unsigned char *ptr = 0x00; *ptr = 0x00;} int main (void){ dummy_function ...

  2. 用流从一个指定的网址抓取html代码

    package cn.bdqn.collect.test; import java.io.BufferedReader; import java.io.InputStream; import java ...

  3. 将php网站移到CentOS 6.7上[一]:yum安装lamp环境

    最近应老师要求,将一个网站从51php上转移到学校提供的服务器上,之前对Linux没有了解,一切都在百度百度百度.于是发现很多步骤自己做过后就忘了,现将有效步骤记录下来,以供下次参考. 原51php上 ...

  4. Scrum Meeting 8-20151210

    任务安排 姓名 今日任务 明日任务 困难 董元财 服务器入口更新 服务器发布记录接口 无 胡亚坤 请假(编译攻坚) 聊天界面优化 无 刘猛 请假(编译攻坚) 开新的分支存放服务器端或者,创建的仓库记录 ...

  5. Scrum Meeting 4-20151204

    任务安排 姓名 今日任务 明日任务 困难 董元财 学习上拉加入新的listview 无 胡亚坤 设计优化聊天页面 无 刘猛 请假(参加编译测试,提前准备) 无 马汉虎 请假(参加编译测试,提前准备) ...

  6. RedHat3.4安装GIT

    1.首先到官网上下载git包,地址为http://git-scm.com/download 注意:选择下载Older releases 2.输入命令tar zxvf git-1.7.9.4.tat.g ...

  7. Android之源码之模块编译和调试

    Android之源码之模块编译调试 (一) 进行源码模块修改进行编译的调试 1.首先是从git或者svn上拉一套完整的工程下来,然后全编一下,一般这个时间比较长,大概会得2,3个小时左右, 2,编译成 ...

  8. bootstrapt model 的多罩层,禁用罩层

    选项 有一些选项可以用来定制模态窗口(Modal Window)的外观和感观,它们是通过 data 属性或 JavaScript 来传递的.下表列出了这些选项: 选项名称 类型/默认值 Data 属性 ...

  9. 二分图最大权最小权完美匹配模板KM

    在网上找了一份挺好的模板,先标一下哦~链接君:http://blog.csdn.net/abcjennifer/article/details/5844579 #include <iostrea ...

  10. opencv中的.at方法

    opencv中的.at方法是用来获取图像像素值得函数: interpolation:差值 histogram:直方图