Asp.net 用fileupload上传文件(图片)

看到kindeditor中保存图片的方式,觉得不错,这里借鉴下,方便后面使用。

 

 protected void Button1_Click(object sender, EventArgs e)
    {
        //get folder,can change to others
        string saveDir = System.AppDomain.CurrentDomain.BaseDirectory;

        String fileName = this.FileUpload1.FileName;
        String fileExt = System.IO.Path.GetExtension(fileName).ToLower();

        Hashtable extTable = new Hashtable();
        extTable.Add("image", "gif,jpg,jpeg,png,bmp");
        extTable.Add("flash", "swf,flv");
        extTable.Add("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
        extTable.Add("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");


        String dirName = "";//传递image,flash,类型等
        if (String.IsNullOrEmpty(dirName))
        {
            dirName = "image";
        }

        //最大文件大小
        int maxSize = 1000000; // 1MB

        if (!this.FileUpload1.HasFile)
        {
            Label1.Text = "请选择文件。";
            return ;
        }
        if (!extTable.ContainsKey(dirName))
        {
            Label1.Text = "目录名不正确。";
            return;
        }
        if (this.FileUpload1.PostedFile.ContentLength > maxSize)
        {
            Label1.Text = "上传文件大小超过限制。";
            return ;
        }

        if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(((String)extTable[dirName]).Split(','), fileExt.Substring(1).ToLower()) == -1)
        {
            Label1.Text = "上传文件扩展名是不允许的扩展名。\n只允许" + ((String)extTable[dirName]) + "格式。";
            return;
        }

        //创建文件夹
        saveDir += dirName + "/";
        if (!Directory.Exists(saveDir))
        {
            Directory.CreateDirectory(saveDir);
        }

        String ymd = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
        saveDir += ymd + "/";
        if (!Directory.Exists(saveDir))
        {
            Directory.CreateDirectory(saveDir);
        }

        String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt;
        String filePath = saveDir + newFileName;
        this.FileUpload1.SaveAs(filePath);
    }

 hashtable,添加不同类型的后缀,这里值得学习。

保存文件先用年月日生产目录,再用时间生成新的文件名字。这里不错,以前都想写的,一直没弄,这次不能再错过了。

 

posted @ 2014-03-04 10:08  chengdu.jack.li  阅读(229)  评论(0)    收藏  举报