zoukankan      html  css  js  c++  java
  • 上传文件的基本操作

     一、上传文件的前端代码比较简单,只需要在form表单中加入

    enctype="multipart/form-data",然后就可以实现上传文件的操作
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
    </head>
    <body>
        <!--enctype="multipart/form-data":如果要上传文件必须加上该属性,指定相应的编码。只有这样用户选择的文件数据(文件流)才会放在请求报文中,发送给服务器。表单中的其它表单元素(文本框等),也会发送到服务端,但是格式也变了,但是在服务端还是按照以前的方式进行接收-->
        <!--如果表单不需要上传文件就不用加  enctype="multipart/form-data"--->
        <!--<form method="post" action="ProcessFileUp.ashx" enctype="application/x-www-form-urlencoded">-->
        <form method="post" action="ProcessFileUp.ashx" enctype="multipart/form-data">
            <input type="file" name="fileUp" />
            <input type="text" name="txtName" />
            <input type="submit" value="上传" />
    
        </form>
    </body>
    </html>

    二、后台代码相对比较多,主要是针对于处理文件的接收和保存,和多用户上传文件时,如何确定文件的唯一性,以及如何对文件更好的保存,而不会导致单一文件夹过大。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.IO;
    namespace CZBK.ItcastProject.WebApp._2015_5_27
    {
        /// <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)
               {
                   //对上传的文件类型进行校验。  单纯的file.FileName可能会获取到文件的路径
                   string fileName =Path.GetFileName(file.FileName);//获取上传文件的名称包含扩展名。
                   string fileExt = Path.GetExtension(fileName);//获取用户上传的文件扩展名。 如top1.jpg 的扩展名就是jpg
                   if (fileExt == ".jpg")
                   {
                       //1.对上传文件进行重命名?
                       string newfileName = Guid.NewGuid().ToString();  //生成一个唯一码
                       //2:将上传的文件放在不同的目录下面,获取当前日期的年月日
                       string dir = "/ImageUpload/"+DateTime.Now.Year+"/"+DateTime.Now.Month+"/"+DateTime.Now.Day+"/";
                       //创建文件夹
                       if (!Directory.Exists(context.Request.MapPath(dir)))
                       {
                           Directory.CreateDirectory(context.Request.MapPath(dir));
                       }
    
                       string fullDir = dir + newfileName + fileExt;//文件存放的完整路径。
                       file.SaveAs(context.Request.MapPath(fullDir));
    
                     //  file.SaveAs(context.Request.MapPath("/ImageUpload/"+fileName));//完成文件的保存。
                       context.Response.Write("<html><body><img src='"+fullDir+"'/></body></html>");
                   }
                   else
                   {
                       context.Response.Write("只能上传图片文件");
                   }
               }
               else
               {
                   context.Response.Write("请选择上传文件");
               }
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }
    后台处理代码
  • 相关阅读:
    U-Learning服务端
    C# 向txt文件中写入
    二维码生成 Gma.QrCodeNet (目前测试支持.net4.0及以上,但vs版本2010不可以 NuGet中搜索不到程序包)
    数据显示按规格向datatable中增加空白记录
    sql server 查询出整数 (可灵活运用)
    sql server 列字段拼接 —— STUFF
    layui confirm 嵌套使用 (随笔记)
    sql server 随记 -- 月份/日期 查询
    SQL Server 数据库备份语句
    关于ScriptManager.RegisterStartupScript 摘录
  • 原文地址:https://www.cnblogs.com/wangjinya/p/10409410.html
Copyright © 2011-2022 走看看