input实现文件上传

input + ajax 实现文件上传,包括文件大小及类型的判断

一、html

<input type="file" id="file" multiple="multiple" onchange="handleFile()">

二、JS

/**
* $icon: 文件上传中loading图标
* fs: 上传的文件($("#file")[0].files)
* max_size: 文件大小的最大值(1024 * 1024 * 100为100M)
*/
function handleFile() {
let $icon = $(".upload-icon");
let formData = new FormData(),
fs = $("#file")[0].files;
let max_size = 1024 * 1024 * 100 for (let i = 0; i < fs.length; i++) {
let d = fs[0]
if(d.size <= max_size){ //文件必须小于100M
if(/.(PDF|pdf|DOC|doc|DOCX|docx)$/.test(d.name)){ //文件必须为文档
formData.append("files", fs[i]); //文件上传处理
}else{
alert('上传文件必须是PDF或DOC!')
return false
} }else{
alert('上传文件过大!')
return false
}
} $icon.removeClass("hidden"); ajaxData({
type: "POST",
url: "/uploader/file",
data: formData,
cache: false,
processData: false,
contentType: false
}).then(res => {
$icon.addClass("hidden"); if (res.code == 200) {
if (res.data && res.data.length > 0) {
let _html = '';
res.data.forEach(d => {
_html += `
<li data-url="${d.url}">
<span>${d.fileName}</span>
<img class="delete" src="./images/delete.png" alt="">
</li>
`;
});
$(".upload-content .upload-list").append(_html);
}
} else {
alert(res.msg);
}
});
}

1.FormData

FormData的主要用途有两个:
1、将form表单元素的name与value进行组合,实现表单数据的序列化,从而减少表单元素的拼接,提高工作效率。
2、异步上传文件

(创建一个空对象,可以通过append()方法来追加数据)

参考文档

2.ajax文件上传参数

1)contentType:false

告诉服务器从浏览器提交过来的数据格式。

默认值为contentType = "application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。上传文件时,在 ajax 中 contentType 设置为 false 是为了避免 JQuery 对其操作,从而失去分界符,而使服务器不能正常解析文件。

学习资料

2)processData: false

jquery是否对数据进行预处理。

默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。

3)cache: false

类型:Boolean

默认值: true,dataType 为 script 和 jsonp 时默认为 false。设置为 false 将不缓存此页面。

input实现文件上传的更多相关文章

  1. input file 文件上传标签的样式美化

    input file 文件上传标签的样式美化 将<input type="file">的透明度设置为0: <input type="file" ...

  2. js 实现 input file 文件上传

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...

  3. PHP 多input file文件上传

    前台html jquery代码 后台PHP处理 前台html <form id="form" method="post" enctype="mu ...

  4. bootstrap File Input 多文件上传插件使用记录(二)删除原文件

    在上一篇文章中,主要介绍了file input插件的初始化和多文件同步上传到服务器的相关配置等.这篇主要介绍file input插件的编辑等. 使用场景: 在后台管理框架中,一条数据中包含不固定的多张 ...

  5. input file 文件上传,js控制上传文件的大小和格式

    文件上传一般是用jquery的uploadify,比较好用.后面会出文章介绍uploadify这个插件. 但是,有时候为了偷懒,直接就用input 的file进行文件和图片等的上传,input fil ...

  6. 修改input file 文件上传的样式

    Web页面中,在需要上传文件时基本都会用到<input type="file">元素,它的默认样式: chrome下: IE下: 不管是上面哪种,样式都比较简单,和很多 ...

  7. Input标签文件上传,使用详解

    1.html添加标签按钮 <button ion-button (click)="selectVideo()">添加</button> <input ...

  8. input的文件上传类型判断

    参考网址: http://www.helloweba.com/view-blog-224.html <p> <label>请选择一个图像文件:</label> &l ...

  9. input file文件上传样式

    <style>    .file-group {        position: relative;        width: 200px;        height: 80px;  ...

随机推荐

  1. Docker给运行中的容器添加映射端口

    方法一: 1.获得容器IP将container_name 换成实际环境中的容器名docker inspect `container_name` | grep IPAddress 2. iptables ...

  2. CSS 换行知多少: word-wrap && word-break && white-space && word-spacing

    word-wrap : 首先提一下,word-wrap 这个 CSS 属性在CSS3中已经被更名为 overflow-wrap,这样语义化也是为了避免与 word-break 混淆: Referenc ...

  3. unity手势插件《FingerGestures 》使用入门

    什么是FingerGestures? FingerGestures是Unity上,非常热门的一款用于处理用户输入的插件 为什么要使用FingerGestures? 1:它统一了鼠标点击和用户触摸的输入 ...

  4. java中元注解

    java中元注解有四个: @Retention @Target @Document @Inherited:  @Retention:注解的保留位置 @Retention(RetentionPolicy ...

  5. netbeans通过wsdl生成webservice的UTF8问题

    在netbeans通过wsdl方式生成的webservice,打开类文件时,提示无法通过UTF-8打开. 这是因为默认生成的文件不是UTF-8格式的,解决方案如下: 1.打开netbeans的安装目录 ...

  6. jvm2

    垃圾回收器的实现: 1.让用户都暂停,不再产生垃圾,就去收集垃圾.新生代用复制算法清理垃圾,老生代用标记整理算法搜集垃圾. 优秀的算法:服务端默认是CMS收集器. %..jvm案例演示 内存: Jco ...

  7. Could not connect to '192.168.89.144' (port 22)

    xshell连接linux主机时,会出现错误:Could not connect to '192.168.89.144' (port 22): Connection failed. 但是这时能ping ...

  8. 【VS Error】VS2008在编译时出现:Error 15 Cannot register assembly

    现象: 在visual studio 2008在编译类库时提示如下错误: Error 15 Cannot register assembly "D:\01_Work\02_SVN\OCRpl ...

  9. 20145327实验二Java面向对象程序设计

    Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 伪代码,产品代码,测试代码的应用 ...

  10. ARTS Week 001

    Algorithm Leetcode 1. Two Sum Given an array of integers, return indices of the two numbers such tha ...