ajax+ashx 完美实现input file上传文件
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:;
- 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:;
- left: -2px;
- opacity:;
- 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 > )
- {
- //设置文件名
- fileNewName = DateTime.Now.ToString("yyyyMMddHHmmssff") + "_" + System.IO.Path.GetFileName(files[].FileName);
- //保存文件
- files[].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;
- }
- }
- }
实现一个简单上传功能
ajax+ashx 完美实现input file上传文件的更多相关文章
- input file 上传文件
面试的时候遇到一个问题,要求手写的方式上传文件. 本来觉得很简单,但是结果怎么也成功不了. 前台: <form ID="form1" action="AcceptF ...
- 在HTML5的 input:file 上传文件类型控制 遇到的问题
1.input:file 属性的介绍 先瞅代码吧 <form> <input type="file" name="pic" accept=& ...
- input file上传文件
如何使用input[type='file']来上传文件呢? html: //angular<input type="file" (change)="fileChan ...
- 巧妙利用label标签实现input file上传文件自定义样式
提到上传文件,一般会想到用input file属性来实现,简单便捷,一行代码即可 但input file原生提供的默认样式大多情况下都不符合需求,且在不同浏览器上呈现的样式也不尽相同 我们往 ...
- 使用input file上传文件中onChange事件只触发一次问题
每次上传文件的时候,都会将当前的文件路径保存至$event.target.value中,当第二次选择文件时,由于两次$event.target.value相同,所以不会触发change事件. 解决方案 ...
- input file上传文件扩展名限制
方法一(不推荐使用):用jS获获取扩展名进行验证: <script type="text/javascript" charset="utf-8"> ...
- angular input file 上传文件
<body > <div ng-controller="fileCtrl"> <form ng-submit="submit(obj)&qu ...
- input file上传文件弹出框的默认格式设置
我们使用html的input 标签type="flie"时,如何设置默认可选的文件格式 <input id="doc_file" type="f ...
- input:file上传文件类型(记录)
imput 属性有以下几种: 1.type:input类型这就不多说了2.accept:表示可以选择的文件类型,多个类型用英文逗号分开,常用的类型见下表. <input id="fil ...
随机推荐
- 周赛C题 LightOJ 1047 (DP)
C - C Time Limit:500MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Description Th ...
- android.os.NetworkOnMainThreadException 在4.0之后谷歌强制要求连接网络不能在主线程进行访问
谷歌在4.0系统以后就禁止在主线程中进行网络访问了,原因是: 主线程是负责UI的响应,如果在主线程进行网络访问,超过5秒的话就会引发强制关闭, 所以这种耗时的操作不能放在主线程里.放在子线程里,而子线 ...
- <<开源硬件创客 15个酷应用玩转树莓派>>
本书共分18章,前3章是本书的基础章节,主要介绍了树莓派的一些基本情况和基本操作,来让读者了解树莓派的前世今生,掌握树莓派基本的使用方法.第4~18章主要介绍15个以树莓派为载体的酷炫应用,大家可以按 ...
- -_-#【Angular】依赖注入
AngularJS学习笔记 var BoxCtrl = function($scope, $element) { } var str = BoxCtrl.toString().replace(/\s/ ...
- (2015年郑州轻工业学院ACM校赛题) A 彩票
这是个简单的题目,其实就是判断是否是偶数, 对二进行特判一下就行了! 比赛时候我们还错两次................ 一看简单题就想抢一血,谁知到第一次提交CE, 再提交WA 汗........ ...
- where T:class 泛型类型约束
对于一个定义泛型类型为参数的函数,如果调用时传入的对象为T对象或者为T的子类,在函数体内部如果需要使用T的属性的方法时,我们可以给这个泛型增加约束: 类的定义 public class Product ...
- 用SQL求1到N的质数和
今天在百度知道中,遇到了一位朋友求助:利用sql求1到1000的质数和.再说今天周五下午比较悠闲,我就在MSSQL 2008中写了出来,现在分享在博客中,下面直接贴代码: declare @num i ...
- 《算法实战策略》-chaper19-队列、栈和双端队列
对于计算机专业的学生来说,他们一定会很熟悉一句话:程序设计 = 算法 + 数据结构.而根据笔者的理解,所谓程序设计其实就是为了编程解决实际问题,所谓算法是一种解决问题某种思维的方法,但是思维需要得到编 ...
- 利用"NOTIFYICONDATA"实现MFC的托盘程序
本文章为转发百度空间内容,,保存一下,以防以后用到.. 一.自定义信息 在头文件中加入下面这句话: #define WM_SHOWTASK (WM_USER+1) 二.MYDLG.CPP文件中添加_m ...
- Java多线程编程(二)
在 Java多线程编程(一) 中的多线程并没有返回值,本文将介绍带返回值的多线程. 要想有返回值,则需要实现新的接口Callable而不再是Runnable接口,实现的方法也改为call()方法,执行 ...