zoukankan      html  css  js  c++  java
  • 文件上传下载代码

    using System;
    using System.Web;
    using System.IO;
    using System.Text;
    using System.Web.UI.WebControls;
    
    namespace BD
    {
        public class FileUtil
        {
            #region 文件路径
    
            /// <summary>
            /// 得到没有后缀的文件名
            /// </summary>
            /// <param name="_FullName"></param>
            /// <returns></returns>
            public static string GetFileNameWithoutExtension(string _FullName)
            {
                return Path.GetFileNameWithoutExtension(_FullName);
            }
    
            /// <summary>
            /// 得到文件的扩展名
            /// </summary>
            /// <param name="_FullName"></param>
            /// <returns></returns>
            public static string GetExtension(string _FullName)
            {
                return Path.GetExtension(_FullName);
            }
    
            /// <summary>
            /// 得到文件名
            /// </summary>
            /// <param name="_FullName"></param>
            /// <returns></returns>
            public static string GetFileName(string _FullName)
            {
                return Path.GetFileName(_FullName);
            }
    
            #endregion
    
            #region 文件上传下载删除
    
            /// <summary>
            /// 上传文件
            /// </summary>
            /// <param name="_DevicePath">需要保存到的根路径</param>
            /// <param name="_FileUpload">文件上传控件</param>
            /// <param name="_NewFileName">返回一个生成的文件名</param>
            /// <returns></returns>
            public static bool UpLoadFile(string _DevicePath, FileUpload _FileUpload, out string _NewFileName)
            {
                _NewFileName = string.Empty;
                StringBuilder sbPath = new StringBuilder();
                sbPath.Append(_DevicePath);
                //检查目录是否存在
                if (!Directory.Exists(sbPath.ToString()))
                {
                    try
                    {
                        //如果目录不存在就创建目录
                        Directory.CreateDirectory(sbPath.ToString());
                    }
                    catch (Exception)
                    {
                        return false;
                    }
                }
                //得到上传文件全路径
                string FullName = _FileUpload.PostedFile.FileName;
                //得到扩展名
                string FileExtension = GetExtension(FullName);
                //随机生成文件名
                Random random = new Random(DateTime.Now.Millisecond);
                string FileName = DateTime.Now.ToString("yyyyMMddHHmmss") + DateTime.Now.Millisecond.ToString() + random.Next(int.MaxValue).ToString();
                _NewFileName = FileName;
                //增加随机生成的文件名
                sbPath.Append(FileName);
                //加上后缀名
                sbPath.Append(FileExtension);
                try
                {
                    //上传到指定文件夹
                    _FileUpload.PostedFile.SaveAs(sbPath.ToString());
                }
                catch (Exception)
                {
                    return false;
                }
                return true;
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="_Path"></param>
            public static void DownloadFileBinary(string _Path)
            {
                //新建一个只读的文件流
                FileStream fstream = new FileStream(_Path, FileMode.Open);
                //设置基本信息
                HttpContext.Current.Response.Buffer = false;
                HttpContext.Current.Response.AddHeader("Connection", "KeepAlive");
                HttpContext.Current.Response.ContentType = "image/jpeg";
                HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.IO.Path.GetFileName(_Path));
                HttpContext.Current.Response.AddHeader("Content-Lengt", fstream.Length.ToString());
                while (true)
                {
                    //开辟缓冲区空间
                    byte[] buffer = new byte[1024];
                    //读取文件的数据
                    int leng = fstream.Read(buffer, 0, 1024);
                    //到文件结尾结束
                    if (leng == 0)
                        break;
                    //读出的文件数据长度等于缓冲区长度,直接将缓冲区数据写入
                    if (leng == 1024)
                        HttpContext.Current.Response.BinaryWrite(buffer);
                    else
                    {
                        //读出文件数据比缓冲区小,重新定义缓冲区大小,只用于读取文件的最后一个数据块
                        byte[] b = new byte[leng];
                        for (int i = 0; i < leng; i++)
                            b[i] = buffer[i];
                        HttpContext.Current.Response.BinaryWrite(b);
                    }
                }
                //关闭下载文件
                fstream.Close();
                //结束文件下载
                HttpContext.Current.Response.End();
            }
    
            /// <summary>
            /// 下载文件
            /// </summary>
            /// <param name="_Path"></param>
            public static void DownloadFile(string _Path)
            {
                FileInfo DownloadFile = new FileInfo(_Path);
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.ClearHeaders();
                HttpContext.Current.Response.Buffer = false;
                HttpContext.Current.Response.ContentType = "application/x-msdownlad";
                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
                HttpContext.Current.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
                HttpContext.Current.Response.WriteFile(DownloadFile.FullName);
                HttpContext.Current.Response.Flush();
                HttpContext.Current.Response.End();
            }
    
            /// <summary>
            /// 删除文件
            /// </summary>
            /// <param name="_Path"></param>
            /// <returns></returns>
            public static bool DeleteFile(string _Path)
            {
                //判断文件是否存在
                if (File.Exists(_Path))
                {
                    try
                    {
                        File.Delete(_Path);
                    }
                    catch (Exception)
                    {
                        return false;
                    }
                    return true;
                }
                return false;
            }
    
            #endregion
        }
    }
  • 相关阅读:
    jmeter HTTP请求之content-type
    MyEclipse10中导入的jquery文件报错(出现红叉叉,提示语法错误)
    MyEclipse使用总结——使用MyEclipse打包带源码的jar包
    MyEclipse使用总结——MyEclipse10安装SVN插件
    Java调用K3Cloud的密码加密算法实现登录密码检验
    Sencha Touch 2 实现跨域访问
    K/3Cloud二次开发基于WebDev附加进程调试
    如何把子单据体的数值合计到单据体上
    移动开发规范概述
    使用HttpWebRequest post数据时要注意UrlEncode
  • 原文地址:https://www.cnblogs.com/AngelLee2009/p/3180874.html
Copyright © 2011-2022 走看看