ajax上传 java,javaWeb中使用ajax上传文件

该博客详细介绍了在JavaWeb中使用ServletFileUpload和DiskFileItemFactory库上传图片和文件的过程,包括设置上传限制、保存路径以及处理上传请求。同时强调了上传文件应保存在网站资源路径而非本地路径,以便于浏览器访问。还提供了前端使用ajax上传文件的示例代码,并提醒了在IE8/9中使用FormData的限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

javaWeb上传图片

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

核心代码:

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 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

pageEncoding="UTF-8"%>

String path = request.getContextPath();

%>

上传文件

$(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: "/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("%22+data.imgUrl+%22");

}

if (data.status == "error") {

alert(data.msg);

}

$("#imgWait").hide();

},

error: function () {

alert("上传失败!");

$("#imgWait").hide();

}

});

}else{

$(".msg").text("请上传图片文件");//不是图片文件

}

}else{

$(".msg").text("上传的不是一个有效的文件");//文件没有后缀名

}

});

});

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

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

JavaWeb项目中使用ajax上传文件

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

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

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

springMVC+jsp+ajax上传文件

工作中遇到的小问题,做个笔记 实现springMVC + jsp + ajax 上传文件 HTML

Ajax上传文件进度条显示

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

伪ajax上传文件

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

flask jQuery ajax 上传文件

1.html 代码

ajax上传文件显示进度

下面要做一个ajax上传文件显示进度的操作,文末有演示地址 这里先上代码: 1.前端代码 upload.html ();Sprite sprite1 = Re ...

Android组件系列----Activity的生命周期

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

初学Pollard Rho算法

前言 \(Pollard\ Rho\)是一个著名的大数质因数分解算法,它的实现基于一个神奇的算法:\(MillerRabin\)素数测试(关于\(MillerRabin\),可以参考这篇博客:初学Mi ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值