javaWeb上传图片

上传文件所必要的两个jar包:commons-fileupload.jar、commons-io.jar。

jar包下载:github路径

核心代码:

 String withPath = req.getServletContext().getRealPath("/");//获取网站的URI根路径(网站资源路径,存内容到这里可以通过浏览器访问)
String webPath = req.getContextPath();//获取网站的URL根路径(访问网站跟路径)
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(2048 * 500);
File file = new File(withPath + "\\temp");// 临时存储文件位置
String path = withPath + "\\upload";// 文件保存位置
factory.setRepository(file);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(1024 * 1024);// 最大的文件文1M(1024KB)
List<FileItem> items = upload.parseRequest(req);
for (FileItem item : items) {
// 如果只上传一个文件那么可以不用循环
System.out.println("for---");
if (item.isFormField()) {
// 上传的不是文件域
jo.put("status", "error");
jo.put("msg", "上传图片失败");
System.out.println(
item.getFieldName() + ":" + item.getString());
}
else {
String fileName = item.getName();// 文件名(包括扩展名)
System.out.println("文件名为:" + fileName);
jo.put("status", "true");
InputStream in = item.getInputStream();
byte[] buffer = new byte[1024];
int len = 0;
String allFileName = path + "\\" + fileName;
OutputStream os = new FileOutputStream(allFileName);
while ((len = in.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
os.close();
in.close();
jo.put("status", "true");
jo.put("msg", "上传图片成功");
jo.put("imgUrl", webPath + "/upload/" + fileName);
}
}

2.html

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>上传文件</title>
<script type="text/javascript" src="<%=path%>/static/lib/myUtils.js"></script>
<script type="text/javascript" src="<%=path%>/static/js/jquery-1.11.1.js"></script>
</head>
<body>
<input type="file"/>
<div class="msg"></div>
<script type="text/javascript">
$(document).ready(function(){
var img_formats = "jpeg,jpg,bmp,png,gif,ico,tiff,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw,wmf";
var file = $("input[type='file']");
file.change(function(){
var files=this.files;
var formData=new FormData();
formData.append('files',files[0]);
var img_format = myUtils.file_format(files[0].name);
console.log(files[0].name);
if(img_format.length > 0){
if(img_formats.indexOf(img_format) >= 0){
var img = myUtils.getFileUrl(files[0]);
$.ajax({
url: "<%=path%>/uploadServlet",
type: "POST",
data: formData,
dataType:"json",
/**
*必须false才会自动加上正确的Content-Type
*/
contentType: false,
/**
* 必须false才会避开jQuery对 formdata 的默认处理
* XMLHttpRequest会对 formdata 进行正确的处理
*/
processData: false,
success: function (data) {
console.log(data);
if (data.status == "true") {
alert(data.msg);
$(".msg").html("<img src='"+data.imgUrl+"'/>");
}
if (data.status == "error") {
alert(data.msg);
}
$("#imgWait").hide();
},
error: function () {
alert("上传失败!");
$("#imgWait").hide();
}
});
}else{
$(".msg").text("请上传图片文件");//不是图片文件
}
}else{
$(".msg").text("上传的不是一个有效的文件");//文件没有后缀名
}
});
});
</script>
</body>
</html>

注意:上传图片的位置要放在->网站资源路径;而不是本地的资源路径,否则上传之后无法在浏览器中预览图片切记!!!

本人小白,各位大神有好的建议多多提点,一起学习共同进步

javaWeb中使用ajax上传文件的更多相关文章

  1. JavaWeb项目中使用ajax上传文件

    1.jsp $("#cxsc").click(function(){ var bankId = $("#bankId").val(); var formdata ...

  2. IE8/9 JQuery.Ajax 上传文件无效

    IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...

  3. springMVC+jsp+ajax上传文件

    工作中遇到的小问题,做个笔记 实现springMVC + jsp + ajax 上传文件 HTML <body> <form id="myform" method ...

  4. Ajax上传文件进度条显示

    要实现进度条的显示,就要知道两个参数,上传的大小和总文件的大小 html5提供了一个上传过程事件,在上传过程中不断触发,然后用已上传的大 小/总大小,计算上传的百分比,然后用这个百分比控制div框的显 ...

  5. 伪ajax上传文件

    伪ajax上传文件   最近在折腾伪ajax异步上传文件. 网上搜索了一下,发现大部分方法的input file控件都局限于form中,如果是在form外的呢? 必须动态生成一个临时form和临时if ...

  6. flask jQuery ajax 上传文件

    1.html 代码 <div> <form id="uploadForm" enctype="multipart/form-data" > ...

  7. ajax上传文件显示进度

    下面要做一个ajax上传文件显示进度的操作,文末有演示地址 这里先上代码: 1.前端代码 upload.html <!DOCTYPE html> <html lang="e ...

  8. 闲话ajax,例ajax轮询,ajax上传文件[开发篇]

    引语:ajax这门技术早已见怪不怪了,我本人也只是就自己真实的经验去总结一些不足道的话.供不是特别了解的朋友参考参考! 本来早就想写一篇关于ajax的文章的,但是前段时间一直很忙,就搁置了,趁着元旦放 ...

  9. models渲染字典&form表单上传文件&ajax上传文件

    {# {% for u in teacher_d.keys %}#} {# {% for u in teacher_d.values %}#} {% for k,u in teacher_d.item ...

随机推荐

  1. A Simple Problem with Integers(线段树区间更新模板)

    最基本的线段树的区间更新及查询和 用tag(lazy)数组来“延缓”更新,查询或添加操作必须进行pushdown操作,即把tag从p传到lp和rp并清楚tag[p],既然得往lp和rp递归,那么就可以 ...

  2. Nginx 磁盘IO的优化

    L:132

  3. html input 禁止输入中文

    <input type="text" class="tel" onkeyup="value=value.replace(/[\u4e00-\u9 ...

  4. LNMP平台部署

    LNAP平台概述 百度百科 LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构. Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统.代表版本有 ...

  5. mysql 测试php连接问题

    <?php$servername = "shuhua.dbhost";$username = "shuhua_user";$password = &quo ...

  6. Tarjan求强连通分量,缩点,割点

    Tarjan算法是由美国著名计算机专家发明的,其主要特点就是可以求强连通分量和缩点·割点. 而强联通分量便是在一个图中如果有一个子图,且这个子图中所有的点都可以相互到达,这个子图便是一个强连通分量,并 ...

  7. 【XSY2729】欧拉子图 无向图连通性 数学

    题目大意 给你一个\(n\)个点\(m\)条边的无向图(可能有重边),对于这个图的边集的子集(一共有\(2^m\)个),如果其导出的子图的每个联通块内都存在欧拉回路,我们就把答案加上这个子图的边数的平 ...

  8. android sqlite boolean 类型

    sql语句中 boolean (bit)类型的字段 ,insert 数据的时候 , 有null ,0 (false),1(true) 三个数可以选择. 例如: insert into pos valu ...

  9. 【arc071f】Infinite Sequence(动态规划)

    [arc071f]Infinite Sequence(动态规划) 题面 atcoder 洛谷 题解 不难发现如果两个不为\(1\)的数连在一起,那么后面所有数都必须相等. 设\(f[i]\)表示\([ ...

  10. rt-thread中线程内置定时器的作用 ---

    @2019-01-15 [小记] 常见到在内核组件的接口函数中,配置和启动一个定时器后,启动线程调度 我猜想是超时时间到达后恢复调用接口函数的线程以执行线程调度语句后的代码