今天需要做一个头像的预览功能,所以我想到了异步上传文件。

总结几点:

异步上传难点:

文件二进制流如何获取

是否需要设置表单的头,就是content-Type那里。异步,所以无所谓了吧。

其他就差不多了。

直接上demo:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery1.8.3.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/Utils.js"></script> <script type="text/javascript"> $(function(){
$("#upload").on('click', function() {
$('#fileToUpload').click();
}); //选择文件之后执行上传
$('#fileToUpload').change(function() {
var formData = new FormData();//生成空的form对象
formData.append("myphoto",$("#fileToUpload")[].files[]);//把该文件对象放入formData
$.ajax({
url:g_basePath+"/FileUploadServlet",
data:formData,
type:"POST",
processData:false, //这个和jquery中formData有关,去除会报错。具体没研究
contentType:false, //这个和头contentType有关,去除后在后台无法获得上传的二进制流
success: function (data) {
//把图片替换
$("#upload").attr("src", data);
}
});
});
}); </script> </head> <body>
<div>
<div style="width:180px;height:180px;border:solid 1px;">
<img id="upload" alt="" style="width: 180px; height: 180px"
src="${pageContext.request.contextPath }/images/defaultphoto.jpg">
<!-- 隐藏file标签 -->
<input id="fileToUpload" style="display: none" type="file" name="myphoto">
</div>
</div>
</body>
</html>

上传时文件使用的是FormData对象,有时间去研究。有人看了我的之后研究了希望回馈一份更好的异步文件上传给我哦,原生js的最好也来一份。哈哈,反哺。

ajax异步上传文件FormDate方式,html支持才可使用的更多相关文章

  1. ajax异步上传文件和表单同步上传文件 的区别

    1. 用表单上传文件(以照片为例)-同步上传 html部分代码:这里请求地址index.php <!DOCTYPE html> <html lang="en"&g ...

  2. 基于Flask开发网站 -- 前端Ajax异步上传文件到后台

    大家好,我是辰哥~ 辰哥最近利用空闲时间在写一个在线可视化平台,过程中也觉得一些技术还是比较有意思的,所以就以模块化的形式分享出来.如:从网页界面(前端)上传文件到服务器(后端). 放一下该模块的界面 ...

  3. Asp.Net Mvc异步上传文件的方式

    今天试了下mvc自带的ajax,发现上传文件时后端action接收不到文件, Request.Files和HttpPostedFileBase都接收不到.....后来搜索了下才知道mvc自带的Ajax ...

  4. Spring使用ajax异步上传文件

    单文件上传 <!-- 创建文件选择框 --> 文件上传 :<input type="file" id="file" name="fi ...

  5. 使用ajax异步上传文件或图片(配合php)

    //html代码 <form enctype="multipart/form-data" id="upForm"> <input type=& ...

  6. Jquery_异步上传文件多种方式归纳

    1.不用任何插件,利用iframe,将form的taget设为iframe的name,注意设为iframe的id是没用的,跟网上很多说的不太一致 iframe_upload.htm <!DOCT ...

  7. 使用Ajax异步上传文件

    之前上传文件都是用表单form设置post请求和enctype类型: <form id="upload_form"action="" method=&qu ...

  8. Ajax 异步上传文件

    需要引用js jquery.form 前端代码 <form action="/Save" id="mainForm" method="post& ...

  9. ajax异步上传文件之data参数----小哈学js

    下载ajaxFileUpload.js(下载网址:http://fileuploadajax.codeplex.com/downloads/get/20976) 修改ajaxFileUpload.js ...

随机推荐

  1. nfs部署和优化 -2

    客户端: cat /etc/passwd 显示用户 weifeng 500   服务端: vim /etc/exports /mnt 192.168.1.105(rw,sync,all_squash, ...

  2. Delphi列表控件TListView定位到某一行。

    ListView1.Item[100].Focused = true; //定位到索引为100的行ListView1.Item[100].Selected = true; ListView1.Item ...

  3. 【SQLServer2008】之改变主键当为null时也不会报错,可以入数据库。

    在SqlServer红框中设置主键,右键会有添加主键选项,并且设置不能为null. 当我们插入主键数据如果为null时,会插不进去,这时候我们需要修改一下,如下图: “标识规范”中选择“是”,就可以了 ...

  4. mapreduce代码实现入门

    mapreduce代码主要包括三个类,map类.reduce类以及测试类! 以wordcount为例, map类为: static class WordMapper extends Mapper< ...

  5. Sqlite 设置外键级联更新

    Sqlite 设置外键级联更新 选择好外键表和列以后,勾选更新事件,更新方式设置为CASCADE,即可在外键更新时自动更新

  6. 【BZOJ4453】cys就是要拿英魂! 后缀数组+单调栈+set

    [BZOJ4453]cys就是要拿英魂! Description pps又开始dota视频直播了!一群每天被pps虐的蒟蒻决定学习pps的操作技术,他们把pps在这局放的技能记录了下来,每个技能用一个 ...

  7. 九度OJ 1035:找出直系亲属 (二叉树、递归)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2380 解决:934 题目描述:     如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外) ...

  8. git修改commit说明

    当发现说明写错了时,执行git commit --amend,然后修改说明即可.

  9. Jeff Dean 排序时间计算

    Quicksort (sometimes called partition-exchange sort) https://en.m.wikipedia.org/wiki/Quicksort

  10. [TroubleShooting]Neither the partner nor the witness server instance for database is availble

    Problem: You are trying to setup a mirroring on a Database called xxxDB(SQL server 2012). You are ge ...