C# FileUpload上传视频、图片、文档,分别保存在不同的文件夹中以及下载文件的方法

aspx.cs代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        //获取文件的后缀名
        string bb = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
        //文件上传后存放的路径
        string image = Server.MapPath("~/File/image/");//图片
        string video = Server.MapPath(" ~/File/Video/");//视频
        string file = Server.MapPath("~/File/File/");//文档

                   //文件上传服务器时存放的路径
                    string serverPath = PactFilePath+"\\";
                    // 创建服务器上传路径
                    if (!Directory.Exists(serverPath))
                    {
                        Directory.CreateDirectory(serverPath);
                    }
                    if (flu_filepath.HasFile)
                    {

        //图片、视频、文件格式自己设定,为了合成二维数组都写了6种格式
        string[] Image={ ".gif", ".png", ".jpeg", ".jpg","bmp",".pic"};

        string[] Video = { ".AVI", ".wma", ".rmvb", ".rm", ".flash", ".mp4"};

        string[] File = { ".doc", ".txt", ".wps", ".pdf", ".rar", ".zip" };

        string[,] arr = new string[3, 6] { { ".doc", ".txt", ".wps", ".pdf", ".rar", ".zip" }, { ".gif", ".png", ".jpeg", ".jpg", "bmp", ".pic" }, { ".AVI", ".wma", ".rmvb", ".rm", ".flash", ".mp4" } };
        if (FileUpload1.HasFile)
        {
            bool break_flag = false;
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 6; j++)
                {
                    if ((i == 0) && (bb == arr[0, j].ToString()))
                    {
                        //将文件保存到指定的位置
                        FileUpload1.PostedFile.SaveAs(file + FileUpload1.FileName);
                        break_flag = true;
                        break;
                    }
                    else if ((i == 1) && (bb == arr[1, j].ToString()))
                    {
                        FileUpload1.PostedFile.SaveAs(image + FileUpload1.FileName);
                        break_flag = true;
                        break;

                    }

                    else if ((i == 2) && (bb == arr[2, j].ToString()))
                    {
                        FileUpload1.PostedFile.SaveAs(video + FileUpload1.FileName);
                        break_flag = true;
                        break;
                    }                
                }
            }
            if (break_flag == true)
            {
                Response.Write("<script>alert('上传成功!')</script>");

            }
            else
            {
                Response.Write("<script>alert('上传文件格式错误!')</script>");
            }

        }
        else
        {
            Response.Write("<script>alert('请选择上传文件!')<script>");
        }
    }
}

HTML代码

<body>
    <form id="form1" runat="server">
    <div>
        <asp:FileUpload ID="FileUpload1" runat="server" />
        <asp:Button ID="Button1" runat="server" Text="上传" onclick="Button1_Click" />
    </div>

   </form>
</body>

web.config  如果上传的文件过大,记得修改配置文件,C#默认是2MB,最大可调到2097151KB大约是2G,executionTimeout设置上传时间

 

<configuration>
 <system.web>
      <httpRuntime maxRequestLength="2097151" executionTimeout="120"/>  </system.web>
</configuration>

 

 

下载文件的方法:

新建一个ASPX页面

 /// <summary>
        /// 下载文件
        /// <param name="file">下载的文件夹</param>
        /// <param name="filePath">文件路径</param>
        /// <param name="fileName">下载的文件全名</param>
        /// </summary>
        public static void DownLoadPactFile(string fileName)
        {
            string filePath = string.Empty;
            filePath = PactFilePath  +"\\"+ fileName;


            if (File.Exists(filePath))
            {
                System.IO.FileStream dFileSM;
                System.IO.BinaryReader dFileBR;

                dFileSM = new System.IO.FileStream(HttpUtility.UrlDecode(filePath, System.Text.Encoding.UTF8), System.IO.FileMode.Open,
                    System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite);
                dFileBR = new System.IO.BinaryReader(dFileSM);

                //重新处理文件名
                string[] name = HttpUtility.UrlDecode(filePath, System.Text.Encoding.UTF8).Split('\\');
                //编码文件名
                string strEdFileName = HttpUtility.UrlEncode(name[name.Length - 1], System.Text.Encoding.UTF8);

                //变更Http头信息
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.Charset = "utf-8";
                HttpContext.Current.Response.AddHeader("connection", "keep-alive");
                HttpContext.Current.Response.ContentType = "application/octet-stream";
                HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + strEdFileName);
                HttpContext.Current.Response.AddHeader("content-length", dFileSM.Length.ToString());

                //当生成的文件大小为0字节时,打开的文件为空
                if (dFileSM.Length != 0)
                {
                    HttpContext.Current.Response.BinaryWrite(dFileBR.ReadBytes((int)dFileSM.Length));
                }

                // 对象释放
                dFileBR.Close();
                dFileSM.Close();
                dFileBR = null;
                dFileSM = null;
            }

posted on 2012-10-29 14:54  Feel  阅读(1789)  评论(1编辑  收藏  举报

导航