java webApp异步上传图片实现代码

网友投稿 287 2023-06-30


java webApp异步上传图片实现代码

如何实现java webApp异步上传图片,先了解以下几个问题:

1.图片上传;

2.图片上传预览;

3.上传图片更改地址异步添加到数据库;

主要内容

本示例主要采用纯HTML前端和javascript代码作工具,查询有关demo其实现图片上传的代码范例如下:

(1)点击上传图片的div代码:

上传图片

从图库中选择

取消

(2)javaScript代码

(3)kindeditor插件的上传图片jsp页面相关代码.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ page import="java.util.*,java.io.*" %>

<%@ page import="java.text.SimpleDateFormat" %>

<%@ page import="org.apache.commons.fileupload.*" %>

<%@ page import="org.apache.commons.fileupload.disk.*" %>

<%@ page import="org.apache.commons.fileupload.servlet.*" %>

<%@ page

import="org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper"%>

<%@ page import="org.json.simple.*" %>

<%

/**

* KindEditor JSP

*

* 本JSP程序是演示程序,建议不要直接在实际项目中使用。

* 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。

*

*/

//文件保存目录路径

String savePath = pageContext.getServletContext().getRealPath("/") + "attached/";

//String savePath = "http:\\\\192.168.1.226:8080\\qslnbase\\uploadFile/";

//String savePath = "D:/WWW/qslnADP/ADP/WebRoot/kindeditor/attached/";

//文件保存目录URL

String saveUrl = request.getContextPath() + "/attached/";

//定义允许上传的文件扩展名

HashMap extMap = new HashMap();

extMap.put("image", "gif,jpg,jpeg,png,bmp,blob");

extMap.put("flash", "swf,flv");

extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");

extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");

//最大文件大小

long maxSize = 1000000;

response.setContentType("text/html; charset=UTF-8");

if(!ServletFileUpload.isMultipartContent(request)){

out.println(getError("请选择文件。"));

return;

}

//检查目录

File uploadDir = new File(savePath);

if(!uploadDir.isDirectory()){

out.println(getError("上传目录不存在。"));

return;

}

//检查目录写权限

if(!uploadDir.canWrite()){

out.println(getError("上传目录没有写权限。"));

return;

}

String dirName = request.getParameter("dir");

if (dirName == null) {

dirName = "image";

}

if(!extMap.containsKey(dirName)){

out.println(getError("目录名不正确。"));

return;

}

//创建文件夹

savePath += dirName + "/";

saveUrl += dirName + "/";

File saveDirFile = new File(savePath);

if (!saveDirFile.exists()) {

saveDirFile.mkdirs();

}

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

String ymd = sdf.format(new Date());

savePath += ymd + "/";

saveUrl += ymd + "/";

File dirFile = new File(savePath);

if (!dirFile.exists()) {

dirFile.mkdirs();

}

//Struts2 请求 包装过滤器

MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request;

//获得上传 的文件名

String fileName1 = wrapper.getFileNames("upload")[0];

//获得文件过滤器

File file = wrapper.getFiles("upload")[0];

//检查文件大小

if(file.length() > maxSize){

out.println(getError("上传文件大小超过限制。"));

return;

}

//检查扩展名

String fileExt1 = fileName1.substring(fileName1.lastIndexOf(".") + 1).toLowerCase();

//重构上传文件名

SimpleDateFormat df1 = new SimpleDateFormat("yyyyMMddHHmmss");

String newFileName1 = df1.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt1;

byte[] buffer = new byte[1024];

//获取文件输出流

FileOutputStream fos = new FileOutputStream(savePath + newFileName1);

String url=savePath + newFileName1;

out.println(url);

//获取内存中当前文件输入流

InputStream in = new FileInputStream(file);

try {

int num = 0;

while ((num = in.read(buffer)) > 0) {

fos.write(buffer, 0, num);

}

} catch (Exception e) {

e.printStackTrace(System.err);

} finally {

in.close();

fos.close();

}

%>

<%!

private String getError(String message) {

JSONObject obj = new JSONObject();

obj.put("error", 1);

obj.put("message", message);

return obj.toJSONString();

}

%>

(4)有关kindeditor上传图片的jar包有如下所示

A.commons-fileupload-1.2.1.jar

B.commons-io-1.4.jar

C.json_simple-1.1.jar

这里没有用到有关于kindeditor的js代码,具体可参考:Kindeditor实现图片自动上传功能

(5)有关kindeditor上传图片预览的div如下


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:struts2.2.3+spring3.1.0+mybatis3.1.0框架整合集成简单demo
下一篇:Java EE项目中的异常处理总结(一篇不得不看的文章)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~