handler 文件上传

来源:互联网 发布:淘宝2017秋款裙子 编辑:程序博客网 时间:2024/04/29 23:37

<!--隐藏的iframe来接受表单提交的信息-->
<iframe name="hd" style="display:none;" mce_style="display:none;"></iframe>
<FORM id="Form1" method="post" action="upload.ashx" enctype="multipart/form-data" target="hd">
<div id="screenshot" style="display:block; background-color:#FFFF99; position:absolute;width:350px; left:8px; bottom:137px;border:1px;  border-color:Gray;border-style:solid; z-index:1;">       
  <input type="file" id="file1" name="upfile" size="28"/>
  <input  type="button" value="发送" onclick="return checksn();"/>   
</div>
<FORM/>
 
 
 
function UpdateMsg(newfilename, filename) {//此函数用来提供给提交到的页面如upload.ashx输出js的回调,更新当前页面的信息
   if (filename == '') { alert('未上传文件!'); return false; }
    alert("上传成功 /n储存的文件名"+newfilename+" /n原文件名 "+filename);
    }
 
 
 
 
<%@ WebHandler Language="C#" Class="upload" %>

using System;
using System.Web;

public class upload : IHttpHandler {
    private string Js(string v) {//此函数进行js的转义替换的,防止字符串中输入了'后造成回调输出的js中字符串不闭合
        if (v == null) return "";
        return v.Replace("'", @"/'");
    }
    //下面就是一个简单的示例,保存上传的文件,如果要验证上传的后缀名,得自己写,还有写数据库什么的
    public void ProcessRequest (HttpContext context) {
        HttpRequest Request = context.Request;
        HttpResponse Response = context.Response;
        HttpServerUtility Server = context.Server;
        //指定输出头和编码
        Response.ContentType = "text/plain";
        Response.Charset = "gb2313";
       
        HttpPostedFile f = Request.Files["upfile"];//获取上传的文件
        string oldfile = f.FileName.Substring(f.FileName.LastIndexOf("//")+1);
        int len = f.ContentLength;
        string des = Request.Form["des"]//获取描述
            ,newFileName=Guid.NewGuid().ToString();//使用guid生成新文件名
        if (len > 5 * 1024 * 1024)
        {
            Response.Write("<mce:script type="text/javascript"><!--
alert('文件大小不能超过5MB!');
// --></mce:script>");//只能上传5MB以内的文件
            Response.End();
            return;
        }
        if (f.FileName == "")//未上传文件
            Response.Write("<mce:script type="text/javascript"><!--
parent.UpdateMsg('','');
// --></mce:script>");//输出js,使用parent对象得到父页的引用
        else { //保存文件
            newFileName += System.IO.Path.GetExtension(f.FileName);//注意加上扩展名
            try {
                f.SaveAs(Server.MapPath("~/UploadFile/" + newFileName));//如果要保存到其他地方,注意修改这里

                //调用父过程更新内容,注意要对des变量进行js转义替换,繁殖字符串不闭合提示错误
                Response.Write("<mce:script type="text/javascript"><!--
parent.UpdateMsg('" + Js(newFileName) + "','" + oldfile + " " + len + "byte" + "')
// --></mce:script>");               
            }
            catch {
                Response.Write("<mce:script type="text/javascript"><!--
alert('保存文件失败!//n请检查文件夹是否有写入权限!');
// --></mce:script>");//如果保存失败,输出js提示保存失败
            }
           
        }
    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}

原创粉丝点击