asp.net 把图片压缩成zip之后再进行下载

//这是导出的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";
    }
}

  

时间: 2024-11-06 09:47:48

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

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

linux  zip命令的基本用法是: zip [参数] [打包后的文件名] [打包的目录路径] linux  zip命令参数列表: -a     将文件转成ASCII模式 -F     尝试修复损坏的压缩文件     -h     显示帮助界面 -m     将文件压缩之后,删除源文件 -n 特定字符串    不压缩具有特定字尾字符串的文件 -o     将压缩文件内的所有文件的最新变动时间设为压缩时候的时间 -q     安静模式,在压缩的时候不显示指令的执行过程 -r     将指定的目录

Css调整图片大小[将大图片压缩成小图片]

<div style="width:设置宽px; height:设置高px; background-image: url('图片路径'); filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='图片路径',sizingMethod='scale'); float:left;background-size:设置宽px 设置高px;"> </div> 采用滤镜[filter]效果,实现大图片压缩

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

为什么需要这个? 使用vue框架开发项目,npm run build这个命令会一直用到,如果需要给后端发包,那你还要打包成zip格式的压缩包,特别是项目提测的时候,一天可能要执行重复好几次,所以才有了写这个批处理的冲动. 虽然说以前没写过,但至少用过.找了份批处理命令的文章了解了下,按自己预先想好的思路,百度了关键的执行命令,然后就自己不断的修改调试,最终完成了这个集webpack打包.压缩成zip格式文件.打开当前文件夹这三个功能的批处理. 怎么用? 只需要把这个批处理文件放在项目根目录下,轻

将图片压缩成大小格式小的图片

将对图片的操作单独写一个内,代码如下: 1 public class DoPic 2 { 3 4 /// <summary> 5 /// 将图片转成二进制流 6 /// </summary> 7 /// <param name="path"></param> 8 /// <returns></returns> 9 public static byte[] SaveImage(String path) 10 { 11

Html5+asp.net mvc 图片压缩上传

在做图片上传时,大图片如果没有压缩直接上传时间会非常长,因为有的图片太大,传到服务器上再压缩太慢了,而且损耗流量. 思路是将图片抽样显示在canvas上,然后用通过canvas.toDataURL方法得到base64字符串来实现压缩. 废话不多少不多说直接看代码: 本次测试使用了 zepto.min.js 插件,更新版本的下载请点击这里 主要js代码: //图片压缩处理 ; (function () { /** * 加载的时候进行抽样检测 * 在iOS中,大于2M的图片会抽样渲染 */ func

压缩成zip文件并通过curl上传

class test{ //curl上传 function testPost(){ $url = "http://liling.gov.gsp365.cn/Api/Upload/postFile"; $file = 'D:\phpStudy\WWW\testcurl\json.zip'; $data = array( 'username' => 'test', 'pwd' => '123456', 'uploadFile' => new CurlFile($file)

列出zip文件内全部内容 当前目录下的所有文件压缩成zip格式的文件(file.zip)

[[email protected] Desktop]# zip -r image.zip ./*.jpg adding: 20161007_113743.jpg (deflated 0%) adding: 20161007_114943.jpg (deflated 0%) [[email protected] Desktop]# file image.zip image.zip: Zip archive data, at least v2.0 to extract [[email protec

滤镜实现图片大小[可以将大图片压缩成小图片]

<div style="width:设置宽px; height:设置高px; background-image: url('图片路径');filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='图片路径',sizingMethod='scale');float:left;background-size:设置宽px 设置高px;">

asp.net将图片转成二进制存入数据库

一.代码如下 1 int code = int.Parse(this.TextBox1.Text);//图片编码 2 string value = this.FileUpload1.PostedFile.FileName.ToString();//图片路径 3 string type = value.Substring(value.LastIndexOf(".") + 1); 4 FileStream fs = File.OpenRead(value); 5 byte[] conten