文件的上传

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

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>");
}

 

posted @ 2015-07-21 16:33  黄者之风  阅读(342)  评论(0编辑  收藏  举报