关于文件上传的ajax交互
首先我们来了解一下上传文件
<input type="file">
input的file常用上传类型
后缀名 MIME名称
*.3gpp audio/3gpp, video/3gpp
*.ac3 audio/ac3
*.asf allpication/vnd.ms-asf
*.au audio/basic
*.css text/css
*.csv text/csv
*.doc application/msword
*.dot application/msword
*.dtd application/xml-dtd
*.dwg image/vnd.dwg
*.dxf image/vnd.dxf
*.gif image/gif
*.htm text/html
*.html text/html
*.jp2 image/jp2
*.jpe image/jpeg
*.jpeg image/jpeg
*.jpg image/jpeg
*.js text/javascript, application/javascript
*.json application/json
*.mp2 audio/mpeg, video/mpeg
*.mp3 audio/mpeg
*.mp4 audio/mp4, video/mp4
*.mpeg video/mpeg
*.mpg video/mpeg
*.mpp application/vnd.ms-project
*.ogg application/ogg, audio/ogg
*.pdf application/pdf
*.png image/png
*.pot application/vnd.ms-powerpoint
*.pps application/vnd.ms-powerpoint
*.ppt application/vnd.ms-powerpoint
*.rtf application/rtf, text/rtf
*.svf image/vnd.svf
*.tif image/tiff
*.tiff image/tiff
*.txt text/plain
*.wdb application/vnd.ms-works
*.wps application/vnd.ms-works
*.xhtml application/xhtml+xml
*.xlc application/vnd.ms-excel
*.xlm application/vnd.ms-excel
*.xls application/vnd.ms-excel
*.xlt application/vnd.ms-excel
*.xlw application/vnd.ms-excel
*.xml text/xml, application/xml
*.zip aplication/zip
*.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
accept属性
只能选择png和gif图片
<input id="fileId1" type="file" accept="image/png,image/gif" name="file" />
multiple属性
多文件上传
<input id="fileId2" type="file" multiple="multiple" name="file" />
获取file的内容
这里要用到change()函数,当元素的值发生改变时,会发生 change 事件。
$('input[type="file"]').change(function() {
file = this.files[0];
});
file获取出来的内容
File {name: "DSC03891.JPG", lastModified: 1451217306000, lastModifiedDate: Sun Dec 27 2015 19:55:06 GMT+0800 (中国标准时间), webkitRelativePath: "", size: 3866624…}lastModified: 1451217306000lastModifiedDate: Sun Dec 27 2015 19:55:06 GMT+0800 (中国标准时间)name: "DSC03891.JPG"size: 3866624type: "image/jpeg"webkitRelativePath: ""__proto__: File
我们需要将图片文件转换成二进制流的方式传给后台,这里我介绍两种方式
FileReader
这一篇博客对FileReader的使用介绍得很详尽,请参看
http://blog.csdn.net/zk437092645/article/details/8745647/
FormData
FormData有两种用法
- 提交表单数据
提交表单还有一个方法是serialize(),但这个方法不能上传文件
使用方法
- 在html的form标签里添加 enctype ="multipart/form-data",这个很重要,没有这个后面所有都没效果
<form class="form-horizontal" id="productform" enctype ="multipart/form-data">
- 在html表单的input中添加name属性,name对应数据库中的字段名
<input type="text" name="productName">
<input type="text" name="productContent">
- ajax交互
$('#submit').click(function(){
var data = new FormData($('#productform')[0]);//[0]必须要
$.ajax({
type:"POST",
url:"http://localhost/blog/management/insertProduct",
data:data,
async:false,
cache:false,
contentType:false,
processData:false,
success:function() {
alert("保存成功!");
},
error:function() {
alert("保存失败!");
console.log(productType);
}
})
});
- 直接使用FormData
FormData也可以直接使用而不是提交整个表单
<input type="file" name="picture" accept=".jpg,.png"
<input type="button" name="" value="提交" class="submit">
$('.submit').click(function() {
var bannerIdText = $(this).closest('div').find(".bannerId").text();
console.log($(".bannerId").html());
var data = new FormData();
data.append("picture",file);
console.log(bannerIdText);
data.append("bannerId",bannerIdText);
console.log(data);
$.ajax({
type:"POST",
url:" http://localhost/blog/management/updateBanner",
data:data,
async:false,
cache:false,
contentType:false,
processData:false,
enctype: 'multipart/form-data',//没有了在form声明处理方式,就必须在这里声明
success:function(data) {
alert("保存成功!");
console.log(data);
},
error:function() {
alert("保存失败!");
}
})
});
FormData的append参数说明
data.append(数据库字段名,你添加的东西名字)
最后如果前端成功的将数据发给后台了,你可以在network中看到这样的信息。
关于文件上传的ajax交互的更多相关文章
- ajax 文件上传,ajax
ajax 文件上传,ajax 啥也不说了,直接上代码! <input type="file" id="file" name="myfile&qu ...
- maven工程 java 实现文件上传 SSM ajax异步请求上传
java ssm框架实现文件上传 实现:单文件上传.多文件上传(单选和多选),并且用 ajax 异步刷新,在当前界面显示上传的文件 首先springmvc的配置文件要配置上传文件解析器: <!- ...
- django设置并获取cookie/session,文件上传,ajax接收文件,post/get请求及跨域请求等的方法
django设置并获取cookie/session,文件上传,ajax接收文件等的方法: views.py文件: from django.shortcuts import render,HttpRes ...
- 利用struts2进行单个文件,批量文件上传,ajax异步上传以及下载
利用struts2进行单个文件,批量文件上传,ajax异步上传以及下载 1.页面显示代码 <%@ page language="java" import="java ...
- Python Django缓存,信号,序列化,文件上传,Ajax登录和csrf_token验证
本节内容 models操作 Django的缓存 请求方式 序列化 Form 配合Ajax实现登录认证 上传文件 Ajax csrf_token验证方式 1 models操作 单表查询: curd(增 ...
- SpringMVC(四)-- springmvc的系统学习之文件上传、ajax&json处理
资源:尚学堂 邹波 springmvc框架视频 一.文件上传 1.步骤: (1)导入jar包 commons-fileupload,commons-io (2)在springmvc的配置文件中配置解析 ...
- 表单文件上传,ajax文件上传
原创链接:http://www.cnblogs.com/yanqin/p/5345562.html html代码 index.jsp(表单文件上传) <form action="sh ...
- layUI框架中文件上传前后端交互及遇到的相关问题
下面我将讲述一下我在使用layUI框架中文件上传所遇到的问题: 前端jsp页面: <div class="layui-form-item"> <label cla ...
- 文件上传之Ajax篇
AJAX上传文件 1.为什么要写这篇文章 楼主前几天去北京面试,聊起ajax上传文件, 面试官告之不能,遂讨论之,不得果,于是写下这篇文章,希望能和大家一起学习 2.正文 首先,要使用ajax上传文 ...
随机推荐
- 虚拟机安装 deepin Linux 注意事项
主要要注意下面几点: 一.虚拟机"客户机操作系统"类型 选择"Windows 7 x64" 选择"客户机操作系统"类型,这个选择十分重要,D ...
- 通过YUM升级centOS内核,以便安装docker
安装Docker要满足一定的条件,对于cents系统,要求必须是64位,并且内核版本是3.10以上. 如果你的centos操作系统内核低于3.10,需要升级到这个版本以上,才能安装docker. 第一 ...
- UWP Flyout浮动控件
看见没,点击"Options"按钮,浮动出来一个界面,这个界面可以用xaml自定义. 如果要点击的控件又Flyout属性那么,可以直接按照下面用 <Button Conten ...
- MySQL-Select语句高级应用
1.1 SELECT高级应用 1.1.1 前期准备工作 本次测试使用的是world数据库,由mysql官方提供下载地址: https://dev.mysql.com/doc/index-other.h ...
- Order笔记-数据库创建
过程: 1,为这个项目新建一个用户名(实例),专门用于这个项目 2,建表 问题: 列在此处不允许: 笔记: 建表设置默认值: alter table 表名 modify 字段名 default 默认值 ...
- Node.js显示页面
首先我们先要下载并安装Nodejs,然后进入Node.js中安装supervisor, npm -g install supervisor -g表示全局模式 (无论windows哪一个用户登陆都可以使 ...
- 数据库——MongoDB——>Java篇
MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产 ...
- 自学Zabbix1.1-简介
1. 初识Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决 方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利. ...
- 翻译:SET NAMES
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- (sqlite3.OperationalError) no such table: users [SQL: 'SELECT users.id AS users_id, users.email AS users_email, users.username AS users_username, users.role_id AS users_role_id, users.password_hash A
在注册新用户的时候报错: (sqlite3.OperationalError) no such table: users [SQL: 'SELECT users.id AS users_id, use ...