ajax+ashx 完美实现input file上传文件

转载:http://www.cnblogs.com/1312mn/p/5569193.html


1、input file 样式不能满足需求

 <input type="file" value="浏览" />

IE8效果图:    Firefox效果图: Chrome效果图:  

2、input file上传按钮美化

css:    

.file{
   position: relative;
   background-color: #b32b1b;
   border: 1px solid #ddd;
   width: 68px;
   height: 25px;
   display: inline-block;
   text-decoration: none;
   text-indent: 0;
   line-height: 25px;
   font-size: 14px;
   color: #fff;
   margin: 0 auto;
   cursor: pointer;
   text-align: center;
   border: none;
   border-radius: 3px;         
}
.file input{
   position: absolute;
   top: 0;
   left: -2px;
   opacity: 0;
   width: 10px;
}

html:  

<div>
    <span>选择文件:</span><input id="txt_filePath" type="text" readonly="readonly"/>
    <a class="file"><input id="btnfile" name="btnfile" type="file"/>浏览</a>
</div>

美化后的效果图:

 

3、ajax+ashx实现上传功能

引入文件:jquery-1.11.3.js   ajaxfileupload.js

 js:

 $(function () {
            //选择文件
            $(".file").on("change", "input[type='file']", function () {
                var filePath = $(this).val();
                //设置上传文件类型
                if (filePath.indexOf("xls") != -1 || filePath.indexOf("xlsx") != -1) {
                    //上传文件
                    $.ajaxFileUpload({
                        url: 'ASHX/FileHandler.ashx',
                        secureuri: false,
                        fileElementId: 'btnfile',
                        dataType: 'json',
                        success: function (data, status) {
                            //获取上传文件路径
                            $("#txt_filePath").val(data.filenewname);
                            alert("文件上传成功!");
                        },
                        error: function (data, status, e) {
                            alert(e);
                        }
                    });
                } else {
                    alert("请选择正确的文件格式!");
                    //清空上传路径
                    $("#txt_filePath").val("");
                    return false;
                }
            });
        })
FileHandler.ashx
public class FileHandler : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        string msg = string.Empty;
        string error = string.Empty;
        string result = string.Empty;
        string filePath = string.Empty;
        string fileNewName = string.Empty;
        //这里只能用<input type="file" />才能有效果,因为服务器控件是HttpInputFile类型
        HttpFileCollection files = context.Request.Files;
        if (files.Count > 0)
        {
            //设置文件名
            fileNewName = DateTime.Now.ToString("yyyyMMddHHmmssff") + "_" + System.IO.Path.GetFileName(files[0].FileName);
            //保存文件
            files[0].SaveAs(context.Server.MapPath("~/Upload/"+fileNewName));
            msg = "文件上传成功!";
            result = "{msg:'" + msg + "',filenewname:'" + fileNewName + "'}";
        }
        else
        {
            error = "文件上传失败!";
            result = "{ error:'" + error + "'}";
        }
        context.Response.Write(result);
        context.Response.End();
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}

实现一个简单上传功能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ajax是一种用于在客户端和服务器之间进行异步通信的技术,可以在不刷新整个网页的情况下更新部分网页内容。JSON是一种轻量级的数据交换格式,常用于在服务器和客户端之间传递数据。ashx是一种处理程序,用于在服务器上接收和处理Ajax请求。 "ajax json ashx实现列表页.rar"是一个压缩文件,可能包含一个使用以上技术实现的列表页的项目。 该项目可能包括一个ashx处理程序,用于接收Ajax请求并处理相关操作。程序可能使用JSON格式将数据从服务器发送到客户端,以便在列表页上更新显示。通过Ajax技术,用户可以在不刷新整个页面的情况下获取最新的数据,并在列表页上进行交互操作,如添加、删除或编辑列表项。 实现这个列表页可能涉及到以下步骤: 1. 创建一个ashx处理程序,用于处理列表页的请求。 2. 在客户端使用Ajax技术发送请求给服务器,请求列表数据。 3. 服务器接收到请求后,从数据库或其他数据源中获取数据,并将数据封装成JSON格式。 4. 服务器将封装好的JSON数据响应给客户端。 5. 客户端接收到响应后,解析JSON数据,并根据数据更新列表页的显示。 6. 在列表页上实现交互功能,如添加、删除或编辑列表项。 7. 根据用户的操作,使用Ajax技术发送相应的请求给服务器,进行数据的增删改操作。 8. 服务器接收到请求后,进行相应的操作,并响应结果给客户端。 9. 客户端接收到响应后,更新列表页的显示。 通过以上的步骤,可以实现一个使用Ajax、JSON和ashx处理程序的列表页,用户可以在列表页上进行数据的增删改操作,并实时更新数据的显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值