zoukankan      html  css  js  c++  java
  • c#图片输出

    1:  Response.BinaryWrite() 其实就是和输出文字一样 只是图片是流的形式;

            delegate long myDel(int first, int second);
            FileStream fs;
            byte[] _byte;
            protected void Page_Load(object sender, EventArgs e)
            {
                Response.ContentType = "image/jpeg";
                fs = new FileStream(Server.MapPath("~/file/") + HttpUtility.UrlDecode("你好.jpg"), FileMode.Open);
                _byte = new byte[fs.Length];
                IAsyncResult ir = fs.BeginRead(_byte, 0, (int)fs.Length, null, null);
                fs.Read(_byte, 0, fs.EndRead(ir));
                fs.Close();
                Response.BinaryWrite(_byte);
    
            }

    2:循环

            protected void Button1_Click(object sender, EventArgs e)
            {
                string filePath = Server.MapPath("~/file/") + HttpUtility.UrlDecode("你好.jpg");
                Response.ContentType = "application/octet-stream";
                Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("你好.jpg", Encoding.UTF8));
                //FileInfo fi = new FileInfo(filePath);
                //Response.WriteFile(fi.FullName);
                //Response.End();
    
    
                int length = 0;
                byte[] arr = new byte[1024 * 1024 * 2];
                using (FileStream fs = new FileStream(filePath, FileMode.Open))
                {
                    length = fs.Read(arr, 0, arr.Length);
                }
                byte[] arrNew = new byte[length];
                System.Buffer.BlockCopy(arr, 0, arrNew, 0, length);
                Response.BinaryWrite(arrNew);
            }
            public static void ResponseFile(string filePath, HttpContext context, bool hasfileName)
            {
                Stream iStream = null;
                byte[] buffer = new Byte[10000];
                int length;
                long dataToRead;
                context.Response.ContentType = "application/octet-stream";
                context.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(Path.GetFileName(filePath), Encoding.UTF8));
                using (iStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    dataToRead = iStream.Length;
                    while (dataToRead > 0)
                    {
                        if (context.Response.IsClientConnected)
                        {
                            length = iStream.Read(buffer, 0, 10000);
                            context.Response.OutputStream.Write(buffer, 0, length);
                            context.Response.Flush();
                            buffer = new Byte[10000];
                            dataToRead = dataToRead - length;
                        }
                        else
                        {
                            dataToRead = -1;
                        }
                    }
                }
  • 相关阅读:
    August 4th, 2016, Week 32nd, Thursday
    August 3rd, 2016, Week 32nd, Wednesday
    Java的垃圾回收机制
    学java入门到精通,不得不看的15本书
    java中set和get方法的理解
    eclipse快捷键
    main方法无法编译
    Java构造器和方法的区别
    交换两个变量的值,不使用第三个变量
    计算圆周率 Pi (π)值, 精确到小数点后 10000 位 只需要 30 多句代码
  • 原文地址:https://www.cnblogs.com/y112102/p/3139574.html
Copyright © 2011-2022 走看看