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

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

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

2、input file上传按钮美化

css:

  1. .file{
  2. position: relative;
  3. background-color: #b32b1b;
  4. border: 1px solid #ddd;
  5. width: 68px;
  6. height: 25px;
  7. display: inline-block;
  8. text-decoration: none;
  9. text-indent:;
  10. line-height: 25px;
  11. font-size: 14px;
  12. color: #fff;
  13. margin: 0 auto;
  14. cursor: pointer;
  15. text-align: center;
  16. border: none;
  17. border-radius: 3px;
  18. }
  19. .file input{
  20. position: absolute;
  21. top:;
  22. left: -2px;
  23. opacity:;
  24. width: 10px;
  25. }

html:

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

美化后的效果图:

3、ajax+ashx实现上传功能

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

js:

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

实现一个简单上传功能

ajax+ashx 完美实现input file上传文件的更多相关文章

  1. input file 上传文件

    面试的时候遇到一个问题,要求手写的方式上传文件. 本来觉得很简单,但是结果怎么也成功不了. 前台: <form ID="form1" action="AcceptF ...

  2. 在HTML5的 input:file 上传文件类型控制 遇到的问题

    1.input:file 属性的介绍  先瞅代码吧 <form> <input type="file" name="pic" accept=& ...

  3. input file上传文件

    如何使用input[type='file']来上传文件呢? html: //angular<input type="file" (change)="fileChan ...

  4. 巧妙利用label标签实现input file上传文件自定义样式

    提到上传文件,一般会想到用input file属性来实现,简单便捷,一行代码即可    但input file原生提供的默认样式大多情况下都不符合需求,且在不同浏览器上呈现的样式也不尽相同   我们往 ...

  5. 使用input file上传文件中onChange事件只触发一次问题

    每次上传文件的时候,都会将当前的文件路径保存至$event.target.value中,当第二次选择文件时,由于两次$event.target.value相同,所以不会触发change事件. 解决方案 ...

  6. input file上传文件扩展名限制

    方法一(不推荐使用):用jS获获取扩展名进行验证: <script type="text/javascript" charset="utf-8"> ...

  7. angular input file 上传文件

    <body > <div ng-controller="fileCtrl"> <form ng-submit="submit(obj)&qu ...

  8. input file上传文件弹出框的默认格式设置

    我们使用html的input 标签type="flie"时,如何设置默认可选的文件格式 <input id="doc_file" type="f ...

  9. input:file上传文件类型(记录)

    imput 属性有以下几种: 1.type:input类型这就不多说了2.accept:表示可以选择的文件类型,多个类型用英文逗号分开,常用的类型见下表. <input id="fil ...

随机推荐

  1. 周赛C题 LightOJ 1047 (DP)

    C - C Time Limit:500MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu   Description Th ...

  2. android.os.NetworkOnMainThreadException 在4.0之后谷歌强制要求连接网络不能在主线程进行访问

    谷歌在4.0系统以后就禁止在主线程中进行网络访问了,原因是: 主线程是负责UI的响应,如果在主线程进行网络访问,超过5秒的话就会引发强制关闭, 所以这种耗时的操作不能放在主线程里.放在子线程里,而子线 ...

  3. <<开源硬件创客 15个酷应用玩转树莓派>>

    本书共分18章,前3章是本书的基础章节,主要介绍了树莓派的一些基本情况和基本操作,来让读者了解树莓派的前世今生,掌握树莓派基本的使用方法.第4~18章主要介绍15个以树莓派为载体的酷炫应用,大家可以按 ...

  4. -_-#【Angular】依赖注入

    AngularJS学习笔记 var BoxCtrl = function($scope, $element) { } var str = BoxCtrl.toString().replace(/\s/ ...

  5. (2015年郑州轻工业学院ACM校赛题) A 彩票

    这是个简单的题目,其实就是判断是否是偶数, 对二进行特判一下就行了! 比赛时候我们还错两次................ 一看简单题就想抢一血,谁知到第一次提交CE, 再提交WA 汗........ ...

  6. where T:class 泛型类型约束

    对于一个定义泛型类型为参数的函数,如果调用时传入的对象为T对象或者为T的子类,在函数体内部如果需要使用T的属性的方法时,我们可以给这个泛型增加约束: 类的定义 public class Product ...

  7. 用SQL求1到N的质数和

    今天在百度知道中,遇到了一位朋友求助:利用sql求1到1000的质数和.再说今天周五下午比较悠闲,我就在MSSQL 2008中写了出来,现在分享在博客中,下面直接贴代码: declare @num i ...

  8. 《算法实战策略》-chaper19-队列、栈和双端队列

    对于计算机专业的学生来说,他们一定会很熟悉一句话:程序设计 = 算法 + 数据结构.而根据笔者的理解,所谓程序设计其实就是为了编程解决实际问题,所谓算法是一种解决问题某种思维的方法,但是思维需要得到编 ...

  9. 利用"NOTIFYICONDATA"实现MFC的托盘程序

    本文章为转发百度空间内容,,保存一下,以防以后用到.. 一.自定义信息 在头文件中加入下面这句话: #define WM_SHOWTASK (WM_USER+1) 二.MYDLG.CPP文件中添加_m ...

  10. Java多线程编程(二)

    在 Java多线程编程(一) 中的多线程并没有返回值,本文将介绍带返回值的多线程. 要想有返回值,则需要实现新的接口Callable而不再是Runnable接口,实现的方法也改为call()方法,执行 ...