注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Bioinformatics home

 
 
 

日志

 
 

ASP.net +JQuery +Ajax上传文件  

2009-06-23 17:25:24|  分类: C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
利用jquery一个控件: ajaxFileUpload 
$.ajaxFileUpload
(
{
url:'doajaxfileupload.php', 
secureuri:false,
fileElementId:'fileToUpload',
dataType: 'json',
success: function (data, status)
{
if(typeof(data.error) != 'undefined')
{
if(data.error != '')
{
alert(data.error);
}else
{
alert(data.msg);
}
}
},
error: function (data, status, e)
{
alert(e);
}
}
)
return false;
}  

新建一个asp.net页面,添加一个html控件    <input type="file" id="fileToUpload" name="fileToUpload" />
在此页面引用jquery.js 和 ajaxfileupload.js
编写javascript代码如下:
                $.ajaxFileUpload({
                    url: 'AjaxUpload.ashx',  //一个asp。net内部代码文件 看下面的介绍
                    secureuri: false,
                    fileElementId: 'fileToUpload',  //此页面的html上传文件控件 fileToUpload
                    dataType: 'text',  //文件传输类型
                    success: function(result) {
                        //alert($(result).text());
                        var d = $(result).text().split(",");  //.ashx文件返回 的数据带有html标签,比较奇怪,故用jquery分离数据出来
                        if ($(":radio:checked").attr("title") == "图片") {
                            $ids.each(function() {
                                $(this).closest("tr").find("img[title=" + $(":radio:checked").val() + "]").attr("src", "../../uploadProduceFile/" + d[1]);
                                $(this).closest("tr").find("input[title=" + $(":radio:checked").val() + "]").val(d[0]);
                            });
                        }

                        if ($(":radio:checked").attr("title") == "附件") {
                            $ids.each(function() {
                                $(this).closest("tr").find("a[title=" + $(":radio:checked").val() + "]").attr("href", "../../uploadProduceFile/" + d[1]).text("打开附件");
                                $(this).closest("tr").find("input[title=" + $(":radio:checked").val() + "]").val(d[0]);

                            });

                        }
                        $("#dec").show("slow").text("成功上传所选文件");
                    },
                    error: function(result, status, e) {  //上传文件异常处理

                        if (status == 'error') {
                            alert(e);
                        }
                    }
                });

AjaxUpload.ashx文件
<%@ WebHandler Language="C#" CodeBehind="AjaxUpload.ashx.cs" Class="AjaxUpload" %>
using System;
using System.Linq;
using LinqHelper;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using System.IO;


public class AjaxUpload : IHttpHandler  //实现这个接口,意味着要实现该接口的两个方法: ProcessRequest和 IsReusable
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";  //响应数据类型
        if (context.Request.Files.Count > 0 && context.Request.Files[0].ContentLength != 0)  
        {
            try
            {
                decimal id;
                HttpPostedFile file = context.Request.Files[0];   //得到上传文件的对象
                string path = yb.WebHelper.Fetch.MapPath("../../uploadProduceFile");
                //string savefile = Path.Combine(path, Path.GetFileName(file.FileName));
                string ext = "";
                switch (Path.GetExtension(file.FileName))
                {
                    case ".xlsx":
                        ext = ".xls";
                        break;
                    case ".docx":
                        ext = ".doc";
                        break;
                    case ".pptx":
                        ext = ".ppt";
                        break;
                    default:
                        ext = Path.GetExtension(file.FileName);
                     break;
                }
                string DownPath = DateTime.Now.ToFileTime().ToString() + ext;
                string savefile = Path.Combine(path, DownPath);
//文件信息写入数据库
                using (var db = dbLinq.GetErpData())
                {
                    _AY_AjaxUpFile f = new _AY_AjaxUpFile();
                    f.DownPath = DownPath;
                    f.FileName = Path.GetFileName(file.FileName);
                    f.FileType = Path.GetExtension(file.FileName);
                    f.FileLenth = file.ContentLength.ToString();
                    f.UpMan = "";
                    f.UpTime = System.DateTime.Now;
                    db._AY_AjaxUpFile.InsertOnSubmit(f);
                    try
                    {
                        db.SubmitChanges();
                        id = f.ID;  // you can access your newRecord to get the ID
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                }

                file.SaveAs(savefile);  //最核心的地方,实现文件上传
                string result = id.ToString() + "," + DownPath;
                //string result ="{'d':'aaa'}";
                //string result="Hello World";
                HttpContext.Current.Response.Write(result);  //返回最后结果
                //HttpContext.Current.Response.End();

            }
            catch (Exception e)
            {
                context.Response.Write(e);
            }
        }
    }
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}



  评论这张
 
阅读(4737)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017