ASP.NET——上传文件

假如现在咱们实现一个上传文件的功能,那么应该怎么做呢?

一、建一个上传文件html页

<!--enctype="multipart/form-data"加上此编码,只有这样用户选择的文件数据(文件流)才会放在请求报文中,发送给服务器-->
<form action="ProcessFileUp.ashx" method="post" enctype="multipart/form-data">
    <input type="file" name="fileUp">
    <input type="submit" value="上传">
</form>

效果图:

点击上传,进入第二步

二、建一个上传文件的一般处理程序

using System;
using System.Web;
using System.IO;
using System.Collections;

namespace WepApp.文件上传
{
    /// <summary>
    /// ProcessFileUp 的摘要说明
    /// </summary>
    public class ProcessFileUp : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";
            //获取上传的文件
            HttpPostedFile file = context.Request.Files[0];
            if (file.ContentLength>0)
            {
                //对上传的文件类型进行校验
                //获取上传文件的名称包含扩展名
                string fileName = Path.GetFileName(file.FileName);
                //获取用户上传的文件扩展名
                string fileExt = Path.GetExtension(fileName);

                //调用IsPicture方法判断是否为图片扩展名
                if (IsPicture(fileExt))
                {
                    //1.对上传文件进行重命名
                    string newfileName = Guid.NewGuid().ToString();
                    //2.将上传的文件放在不同的目录下面,根据日期
                    string dir = "/ImageUpload/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/";
                    //3.判断是否含有该目录
                    if (!Directory.Exists(context.Request.MapPath(dir)))
                    {
                        Directory.CreateDirectory(context.Request.MapPath(dir));
                    }

                    //文件的完整路径
                    string fullDir = dir + newfileName + fileExt;
                    //保存文件,将虚拟路径转换为物理路径
                    file.SaveAs(context.Request.MapPath(fullDir));
                    //输出文件                    
                    context.Response.Write("<html><body><img src='"+ fullDir + "'></body></html>");
                }
                else
                {
                    context.Response.Write("只能上传图片文件");
                }
            }
            else
            {
                context.Response.Write("请选择上传文件");
            }
        }
        
        //判断是否是图片的格式
        public bool IsPicture(string fileext)
        {
            ArrayList a1 = new ArrayList();
            a1.Add(".bmp");
            a1.Add(".jpg");
            a1.Add(".png");
            a1.Add(".tif");
            a1.Add(".gif");
            a1.Add(".pcx");

            if (a1.Contains(fileext))
            {
                return true;
            }
            return false;
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

三、总结

代码部分完成一个用户上传文件到网站服务器的功能实现,重点代码如下

发布了156 篇原创文章 · 获赞 49 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/shang_0122/article/details/103215108