• 文件的上传


    步骤:
    一.上传文件;
    二.获取文件类型集合;
    三.设置保存路径;
    四.判断文件类型,如文件大小、文件后缀名;
    五.保存文件。

    1.新建一个html文件,在html文件写入如下内容:
    注意:method必须设置为post,enctype必须设置为multipart/form-data,请看enctype的值有如下几种:
    application/x-www-form-urlencoded:在发送前编码所有字符(默认)
    multipart/form-data:不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。
    text/plain:空格转换为 "+" 加号,但不对特殊字符编码。

    <form action="Text1.ashx" method="post" enctype="multipart/form-data">
        <input type="file" name="file1" /><br />
        <input type="text" name="name" value="" /><br />
        <input type="submit" value="上传" />
    </form>

    2.新建一个一般处理程序.ashx,填入如下内容:

    context.Response.ContentType = "text/html";
    HttpPostedFile file1 = context.Request.Files["file1"];//获取上传的文件的集合
    //设置保存路径
    string filePath = context.Server.MapPath("~/unload" + "/" + file1.FileName);
    //判断文件大小
    if (file1.ContentLength > 1024 * 1024 * 1)
    {
        context.Response.Write("只能上传小于2MB文件");
        return;
    }
    //保存文件
    file1.SaveAs(filePath);
    context.Response.Write(filePath + "---上传成功");

    3.运行html页面即可将文件保存到当前目录下的unload下面

    HttpPostedFile对象有如下属性:
    ContentLength:获取上载文件的大小(以字节为单位)
    ContentType:获取客户端发送的文件的 MIME 内容类型
    FileName:获取客户端上的文件的完全限定名称
    SaveAs:保存上传文件的内容

    案例一:上传文件到根目录下的年、月、日目录下

    context.Response.ContentType = "text/html";
    //获取上传的文件的集合
    HttpPostedFile file1 = context.Request.Files["file1"];
    //创建年、月、日
    DateTime dt = DateTime.Now;
    int year = dt.Year;
    int month = dt.Month;
    int day = dt.Day;
    string date = (year + "/" + month + "/" + day + "/").ToString();
    //获取虚拟路径
    string filePath = context.Server.MapPath("~/unload" + "/" + date);
    //创建文件夹
    if (!Directory.Exists(filePath))
    {
        Directory.CreateDirectory(filePath);
    }
    //判断文件类型
    if (file1.ContentLength > 1024 * 1024 * 1)
    {
        context.Response.Write("只能上传小于2MB文件");
        return;
    }
    filePath += file1.FileName;
    //保存文件
    file1.SaveAs(filePath);
    context.Response.Write(filePath + "---上传成功");

    上传文件后显示图片

    //获取文件扩展名
    string
    ext = Path.GetExtension(filePath); if (ext == ".jpg" || ext == "gif" || ext == "png") { context.Response.ContentType = "image/jpeg"; string path = context.Server.MapPath("~/unload" + "/" + date + file1.FileName); using (Stream instream = File.OpenRead(path)) { instream.CopyTo(context.Response.OutputStream); } }

    案例二:将excel数据内容显示在网页上

    1.html文件内容

    <form action="WebExcel.ashx" method="post" enctype="multipart/form-data">
        <input type="file" name="excelFile" />
        </p>
        <input type="submit" name="btnOK" />
    </form>

    2.一般处理程序代码

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/html";
        HttpPostedFile excelFile = context.Request.Files["excelFile"];
        //判断文件大小、后缀名
        if (excelFile.ContentLength <= 0)
        {
            context.Response.Write("没有选择文件");
            return;
        }
        string fileExt = Path.GetExtension(excelFile.FileName);
        if (fileExt != ".xls" && fileExt != ".xlsx")
        {
            context.Response.Write("只允许上传xls或xlsx文件");
            return;
        }
        OutputHtmlFirst(context.Response);
        //创建excel,读取上传文件内容
        IWorkbook workbook = WorkbookFactory.Create(excelFile.InputStream);
        for (int i = 0; i < workbook.NumberOfSheets; i++) //workbook.NumberOfSheets
        {
            ISheet sheet = workbook.GetSheetAt(i);
            OutputSheet(context.Response, sheet);
        }
        OutputHtmlEnd(context.Response);
    }
    
    //输出单元格内容
    private void OutputSheet(HttpResponse response, ISheet sheet)
    {
        response.Write("<h1>" + sheet.SheetName + "</h1>");
        response.Write("<table border='1' cellpadding='0' cellspacing='0'>");
        for (int i = sheet.FirstRowNum; i <= sheet.LastRowNum; i++)
        {
            IRow excelRow = sheet.GetRow(i);
            response.Write("<tr>");
            for (int j = excelRow.FirstCellNum; j < excelRow.LastCellNum; j++)
            {
                ICell cell = excelRow.GetCell(j);
                string cellValue = cell.ToString();
                response.Write("<td>" + cellValue + "</td>");
            }
            response.Write("</tr>");
        }
        response.Write("</table>");
    }
    //输出html表头
    private void OutputHtmlFirst(HttpResponse response)
    {
        response.Write("<html><body>");
    }
    //输出html结尾
    private void OutputHtmlEnd(HttpResponse response)
    {
        response.Write("</body></html>");
    }
  • 相关阅读:
    数据结构 练习 22-并查集以及图的最小生成树
    C# 上传RAR文件 解压 获取解压后的文件名称
    [置顶] 程序员学数据库那些事儿
    编程挑战:字符串的完美度
    Hibernate主键生成策略
    利用冒泡排序对数组进行排序
    小学生玩ACM----广搜
    CGContext绘图
    [置顶] 《Windows编程零基础》__2 一个完整的程序
    java 网络编程
  • 原文地址:https://www.cnblogs.com/genesis/p/4664867.html
Copyright © 2020-2023  润新知