java中图片上传并在jsp页面显示

合集下载

图片上传的设计与实现

图片上传的设计与实现

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊图片上传的设计与实现二.设计目的运用jsp开发工具和数据库开发一个小型的基于Web系统。

要求提交详细的设计说明书及各步骤所需图表和文档,对复杂的代码段和程序段,应画出程序流程图。

在界面设计中,画出每个窗口的布局。

通过本实践性教学环节,能较好地巩固jsp基本知识,jsp连接数据库实现动态网页。

三.需求分析如今时代,互联网已经进入我们的生活,而互联网上就有图片上传,显示,访问等等功能,有着很大的市场空间。

图片上传必须实现:1.数据库访问模块:利用JavaBean封装对数据库的操作,主要包括连接数据库、添加、删除、查询数据表、关闭连接等功能;2.上传模块:通过上传组件实现图片的上传。

3.显示模块:提供图片信息列表的显示效果。

4.查看模块:点击可以显示图片的内容。

四.总体设计图片上传是指客户端通过Web应用程序将本地图片资源传输到服务器上。

在客户端需要显示图片时,服务器端将图片通过网络以流的形式发送给客户端,然后利用不同的形式显示图片。

图片上传必须要对电子相册有,用户注册,用户注册,添加相片,修改相册,用户反馈,管理用户,如图1所示。

图1 总体设计┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊1.文件上传组件介绍文件上传组件是一些开源组织发布的针对实现文件上传功能的一组class 文件。

jspSmartUpload和Apache的common-fileupload是两个比较流行的文件上传组件。

这两个组件都可以在JSP中实现文件上传。

本节使用Apache的common-fileupload组件实现图片上传。

2.HTML中文件上传组件介绍HTML中<input type="file"/>元素可以创建文件上传组件。

该控件带有一个文本框和浏览按钮。

使用该组件时要注意以下几点。

Java多方式实现文件上传

Java多方式实现文件上传

在Struts 2中实现文件上传前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题,所以今天我们就来讨论一下这个问题。

实现原理Struts 2是通过Commons FileUpload文件上传。

Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。

从而我们就能够以本地文件方式的操作浏览器上传的文件。

具体实现前段时间Apache发布了Struts 2.0.6 GA,所以本文的实现是以该版本的Struts 作为框架的。

以下是例子所依赖类包的列表:清单1 依赖类包的列表首先,创建文件上传页面FileUpload.jsp,内容如下:<% @ page language = " java " contentType = " text/html; charset=utf-8 " pageEncodi ng = " utf-8 " %><% @ taglib prefix = " s " uri = " /struts-tags " %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/ TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><title> Struts 2 File Upload </title></head><body><s:form action="fileUpload"method="POST"enctype="multipart/form-data"> <s:file name="myFile"label="Image File"/><s:textfield name="caption"label="Caption"/><s:submit /></s:form></body></html>清单2 FileUpload.jsp在FileUpload.jsp中,先将表单的提交方式设为POST,然后将enctype设为multipart/form-data,这并没有什么特别之处。

java与ckeditor和ckfinder整合后实现上传图片功能

java与ckeditor和ckfinder整合后实现上传图片功能
<directory>%BASE_DIR%files</directory>
<maxSize>0</maxSize>
<allowedExtensions>7z,aiff,asf,avi,bmp,csv,doc,docx,fla,flv,gif,gz,gzip,jpeg,jpg,mid,mov,mp3,mp4,mpc,mpeg,mpg,ods,odt,pdf,png,ppt,pptx,pxd,qt,ram,rar,rm,rmi,rmvb,rtf,sdc,sitd,swf,sxc,sxw,tar,tgz,tif,tiff,txt,vsd,wav,wma,wmv,xls,xlsx,zip
</type>
</types>
<!-- 可允许的操作 -->
<accessControls>
<accessControl>
<role>*</role>
<resourceType>*</resourceType>
<folder>/</folder>
<params>
<param name="smallThumb" value="90x90"></param>
<param name="mediumThumb" value="120x120"></param>
<param name="largeThumb" value="180x180"></param>

jsp上传图片完整代码

jsp上传图片完整代码
Calendar cal=Calendar.getInstance();
String filename=String.valueOf(cal.getTimeInMillis());
saveurl=request.getRealPath("/")+url;
{
sma.setAllowedFilesList("jpg,gif");
sma.upload();
}catch(Exception e){
%>
<script language="jscript">
if(myf.isMissing()){
%>
<script language="jscript">
alert("请选择要上传的文件!")
window.location.href="upfile.jsp"
</script>
<html>
<head>
<title>My JSP 'uploadimage.jsp' starting page</title>
</head>
<body>
<%
SmartUpload sma=new SmartUpload();
out.println("图片上传成功!");
response.sendRedirect("showimg.jsp");
}
}
}catch(Exception e){

JAVA中的文件上传

JAVA中的文件上传

SmartUpload上传图片目标:在Jsp页面中实现文件上传初级篇文件上传是我们程序中会经常使用到的功能,针对于上传的技术也非常多!那么在此介绍两种常用简单的上传方式上传方式一:使用SmartUpload组建进行上传上传方式二:使用Struts的<html:file>标签进行上传我们新建一个Java Web工程,这里使用纯粹的jsp进行上传和显示功能的实现。

我们需要在我们的工程中添加smartUpload.jar包之后我们编写index.jspIndex.jsp ViewIndex.jsp Source需要注意的设置表单的enctype="multipart/form-data"这个值我们可以再Dreamweaver中选我们将表单提交到另一个处理上传请求的doUploadjsp页面我们现在编写处理文件上传的页面doUpload.jsp下面是doUpload.jsp页面中的源代码<%@page language="java"import="java.util.*"pageEncoding="GBK"%><%@page import="com.jspsmart.upload.File"%><%@page import="com.jspsmart.upload.Files"%><%@page import="com.jspsmart.upload.SmartUpload"%><%//实例化上传组件SmartUpload upload=new SmartUpload();//初始化上传组件upload.initialize(this.getServletConfig(),request,response);//开始上传upload.upload();//获取上传的文件列表对象Files f=upload.getFiles();//获取文件对象File fil=f.getFile(0);//去的文件后缀String ext=fil.getFileExt();//判断文件类型是否是jpg格式if(!(ext.equals("jpg"))){out.println("<script type='text/javascript'>alert('文件类型错误');location.replace('index.jsp');</script>");return;}//满足条件进行文件的上传需要注意的是upload使我们webRoot文件夹下的一个目录fil.saveAs("upload/"+fil.getFileName());%>至此我们就完成了一个最简单的图片上传示例。

Java通用文件上传功能实现

Java通用文件上传功能实现

Java通用文件上传功能实现一、文件上传流程说明:Java文件上传功能是指在Java开发中,实现文件上传的功能,可以用于各种场景,如网站上传图片、文件管理系统等。

以下是一种常见的实现方式:1、创建一个包含文件上传功能的表单页面,用户可以选择要上传的文件并提交表单。

2、在后端Java代码中,接收表单提交的文件数据。

可以使用Apache Commons FileUpload库或Spring框架提供的MultipartFile类来处理文件上传。

3、对接收到的文件进行处理,可以将文件保存到服务器的指定位置,或者将文件存储到数据库中。

4、返回上传成功或失败的信息给用户。

二、代码实现,方案一:在Java中实现文件上传功能可以通过以下步骤来完成:1、创建一个HTML表单,用于选择要上传的文件:<form action="upload"method="post" enctype="multipart/form-data"> <input type="file" name="file" /><input type="submit" value="Upload" /></form>2、创建一个Servlet或者Controller来处理文件上传请求:@WebServlet("/upload")public class UploadServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) {// 获取上传的文件Part filePart = request.getPart("file");String fileName = filePart.getSubmittedFileName();// 指定上传文件的保存路径String savePath = "C:/uploads/" + fileName;// 将文件保存到指定路径filePart.write(savePath);// 返回上传成功的消息response.getWriter().println("File uploaded successfully!");}}3、配置web.xml(如果使用传统的Servlet方式)或者使用注解(如果使用Servlet 3.0+)来映射Servlet。

JSP上传图片到数据库的例子

JSP上传图片到数据库的例子

现在想写个程序向数据库中插入图片路径(或则插入图片也可以)最好是插入图片的路径这样可插入任意大的图片...请高手指点一下思路..感激不尽1.通过显示层向数据库中插入图片2.在界面显示的时候是小图片(缩小过的)3.当点击查看大图片会显示图片(原来的大小)提供给你图片上传和显示的代码吧!希望对你有帮助我在程序代码里贴了向Mysql数据库写入image代码的程序,可是好多人都是Java的初学者,对于这段代码,他们无法将它转换成jsp,所以我在这在写一下用jsp怎样向数据库写入图像文件。

大家先在数据库建这样一张表,我下面的这些代码对任何数据库都通用,只要支持blob类型的只要大家将连接数据库的参数改一下就可以了。

SQL> create table image(id int,content varchar(200),image blob);如果在sqlserver2000的数据库中,可以将blob字段换为image类型,这在SqlServer2000中是新增的。

testimage.html文件内容如下:<HTML><HEAD><TITLE> Image File </TITLE><meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 "></HEAD><FORM METHOD=POST ACTION= "testimage.jsp "><INPUT TYPE= "text " NAME= "content "> <BR><INPUT TYPE= "file " NAME= "image "> <BR><INPUT TYPE= "submit "> </FORM><BODY></BODY></HTML>我们在Form的action里定义了一个动作testimage.jsp,它的内容如下:<%@ page contentType= "text/html;charset=gb2312 "%><%@ page import= "java.sql.* " %><%@ page import= "java.util.* "%><%@ page import= "java.text.* "%><%@ page import= "java.io.* "%><html><%Class.forName( "org.gjt.mm.mysql.Driver ").newInstance();String url= "jdbc:mysql://localhost/mysql?user=root&password=&useUnicode=true&characterEncoding=885 9_1 ";//其中mysql为你数据库的名字,user为你连接数据库的用户,password为你连接数据库用户的密码,可自己改Connection conn= DriverManager.getConnection(url);String content=request.getParameter( "content ");String filename=request.getParameter( "image ");FileInputStream str=new FileInputStream(filename);String sql= "insert into test(id,content,image) values(1,?,?) ";PreparedStatement pstmt=dbconn.conn.prepareStatement(sql);pstmt.setString(1,content);pstmt.setBinaryStream(2,str,str.available());pstmt.execute();out.println( "Success,You Have Insert an Image Successfully ");%>下面我写一个测试image输出的例子看我们上面程序写的对不对,testimageout.jsp的内容如下:<%@ page contentType= "text/html;charset=gb2312 "%><%@ page import= "java.sql.* " %><%@ page import= "java.util.* "%><%@ page import= "java.text.* "%><%@ page import= "java.io.* "%><html><body><%Class.forName( "org.gjt.mm.mysql.Driver ").newInstance();String url= "jdbc:mysql://localhost/mysql?user=root&password=&useUnicode=true&characterEncoding=885 9_1 ";//其中mysql为你数据库的名字,user为你连接数据库的用户,password为你连接数据库用户的密码,可自己改Connection conn= DriverManager.getConnection(url);String sql = "select image from test where id =1 ";Statement stmt=null;ResultSet rs=null;try{stmt=conn.createStatement();rs=stmt.executeQuery(sql);}catch(SQLException e){}while(rs.next()) {res.setContentType( "image/jpeg ");ServletOutputStream sout = response.getOutputStream();InputStream in = rs.getBinaryStream(1);byte b[] = new byte[0x7a120];for(int i = in.read(b); i != -1;){sout.write(b);in.read(b);}sout.flush();sout.close();}}catch(Exception e){System.out.println(e);}%></body></html>你运行这个程序,你就会看到刚才你写入美丽的图片就会显示在你面前。

JavaMultipartFile实现上传文件上传图片

JavaMultipartFile实现上传文件上传图片

JavaMultipartFile实现上传⽂件上传图⽚1. 判断允许上传⽂件的⽂件后缀/图⽚后缀/相⽚后缀和其它⼯具类import ponent;import java.io.File;import java.util.Arrays;import java.util.List;@Componentpublic class FileUtil {public static final List<String> IMAGE_EXTENSIONS = Arrays.asList(".jpg", ".jpeg", ".png");}import java.util.UUID;public class CommonUtil {public static String getUUID() {String uuid = UUID.randomUUID().toString().replaceAll("-", "");return uuid;}}import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;public class DateUtil {public static final String HH = "HH";public static final String YYYY_MM_DD = "yyyy-MM-dd";public static final DateTimeFormatter FORMATTER_HH = DateTimeFormatter.ofPattern(HH);public static final DateTimeFormatter FORMATTER_YYYY_MM_DD = DateTimeFormatter.ofPattern(YYYY_MM_DD);public static String getHH() {return FORMATTER_HH.format(LocalDateTime.now());}public static String getYYYYMMDD() {return FORMATTER_YYYY_MM_DD.format(LocalDateTime.now());}}2. 上传接⼝@PostMapping("/updateImage.do")public Map<String, String> updateImage(@RequestParam("image") MultipartFile[] multfiles) {Map<String, String> result = new HashMap<>();if (multfiles.length == 0) {result.put("message", "请选择图⽚!");return result;}// 源⽂件名称final String originalFileName = multfiles[0].getOriginalFilename();if (StringUtils.isBlank(originalFileName)) {result.put("message", "请选择图⽚!");return result;}// ⽂件后缀[.jpg]final String suffix = originalFileName.substring(stIndexOf(".")).toLowerCase();if (!FileUtil.IMAGE_EXTENSIONS.contains(suffix)) {result.put("message", "图⽚格式错误!");return result;}String lastFilePath;String newFileName = CommonUtil.getUUID() + suffix;String folderName = File.separator + "temp" + File.separator;String relativePath = folderName + DateUtil.getYYYYMMDD() + File.separator + DateUtil.getHH();String filePath = "D:\\file" + relativePath;String fileUrl = null;File targetFile = new File(filePath);if (!targetFile.exists()) {targetFile.mkdirs();}FileOutputStream out = null;try {lastFilePath = filePath + File.separator + newFileName;out = new FileOutputStream(lastFilePath);out.write(multfiles[0].getBytes());fileUrl = "http://127.0.0.1:9000" + relativePath + File.separator + newFileName;} catch (Exception e) {e.printStackTrace();} finally {if (out != null) {try {out.flush();} catch (IOException e) {e.printStackTrace();}try {out.close();} catch (IOException e) {e.printStackTrace();}}}if (fileUrl == null) {result.put("message", "图⽚上传失败!");return result;}result.put("message", "上传成功!");result.put("url", fileUrl);return result;}3. 上传成功url => http://127.0.0.1:9000/temp/2019-09-12/14/0eac00b96f134652b34172e84febe8d1.jpg以上就是Java MultipartFile实现上传⽂件/上传图⽚的详细内容,更多关于Java MultipartFile上传⽂件的资料请关注其它相关⽂章!。

jimageupload的用法

jimageupload的用法

jimageupload的用法jImageUpload是一个简单且易于使用的Java图像上传库。

它为开发人员提供了一种便捷的方式来实现图像上传功能。

以下是jImageUpload的几种用法:1. 添加依赖:要在项目中使用jImageUpload,首先需要在项目的构建文件中添加相应的依赖。

例如,如果您使用Maven构建项目,可以在pom.xml文件中添加以下依赖项:```<dependency><groupId>com.github.wangtonghe</groupId><artifactId>jimageupload</artifactId><version>1.0.0</version></dependency>```2. 初始化jImageUpload:要使用jImageUpload,在您的Java代码中导入jImageUpload库,并创建一个jImageUpload对象。

您可以通过调用`JImageUpload()`构造函数来实现。

```javaimport com.github.wangtonghe.jimageupload.JImageUpload;public class Main {public static void main(String[] args) {JImageUpload jImageUpload = new JImageUpload();// 其他代码...}}```3. 设置上传配置:在使用jImageUpload之前,您可以对上传过程进行配置。

例如,您可以设置上传文件的最大大小、允许的文件类型等参数。

以下是一个示例:```javaimport com.github.wangtonghe.jimageupload.JImageUpload;import com.github.wangtonghe.jimageupload.config.UploadConfig;public class Main {public static void main(String[] args) {JImageUpload jImageUpload = new JImageUpload();UploadConfig uploadConfig = new UploadConfig();uploadConfig.setMaxSize(10 * 1024 * 1024); // 设置上传文件的最大大小为10MBuploadConfig.setAllowedTypes("jpg", "png", "gif"); // 仅允许上传jpg、png、gif 文件jImageUpload.setUploadConfig(uploadConfig);// 其他代码...}}```4. 处理上传请求:使用jImageUpload的一个主要目的是处理图像上传请求。

软件工程答辩常见问题总结

软件工程答辩常见问题总结

1、我们正常写完一个JAVA文件都需要自动编译一下,这就是为什么?因为我们运行程序得时候用到得不就是java程序而就是class程序、tomcat读得就是java文件还就是什么?就是class文件不就是java程序2、链接sqlserver得一般端口就是什么?1433还有其她得端口么?tomcat得8080端口3、在java项目开发当作,您一般就是怎么调试程序得?sqlserver数据库得还原以及备份?利用debug调试程序、4、如果我要给页面加过滤器控制乱码,我应该怎么做?近来在调试Jsp文件问题时,中文乱码现象经常遇到,现将处理方法总结一下,供大家参考:①、Jsp文件页面显示乱码,这种情况比较好处理,在页面得Page指令加上如下一项就OK了:<%@ page contentType="text/html; charset=gb2312"%>②、Jsp页面采用表单提交时,提交得数据中含有中文,这时我们获取表单数据后,展示到其它页面时也会出现乱码,解决方案就是在提交处理得Servlet里接收数据时,先加上如下一行代码:request、setCharacterEncoding("gb2312");这就是其中得一种作法,当页面较少时还好,如果页面较多,我每添加新得页面就要加上这句话,所以可以采用过滤器来解决,具体解决步骤如下:首先写一个过滤器类,代码如下:package demo;import java、io、IOException;import javax、servlet、Filter;import javax、servlet、FilterChain;import javax、servlet、FilterConfig;import javax、servlet、ServletException;import javax、servlet、ServletRequest;import javax、servlet、ServletResponse;public class SetCharacterEncodingFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)throws IOException, ServletException {request、setCharacterEncoding("gbk");// 传递控制到下一个过滤器chain、doFilter(request, response);}public void init(FilterConfig filterConfig) throwsServletException {}}然后在web、xml文件中添加如下代码:<filter><!--为过滤器起个名字--><filter-name>Set Character Encoding</filter-name><!--过滤器类得包名、类名--><filter-class>demo、SetCharacterEncodingFilter</filter-class> </filter><filter-mapping><filter-name>Set Character Encoding</filter-name><!--匹配所有得请求--><url-pattern>/*</url-pattern></filter-mapping>这样所有得请求都将交由这个过滤器处理下,这样无论我们添加多少个页面都可以放心了,不用总考虑要加那么一句代码了、③、在存取数据库时发生乱码现象,这种现象比较郁闷,处理起来相对复杂一点、首先要在数据存入数据库时,进行如下编码得转换:如我们要把含有中文得字符串存入数据库,首先:String s=request、getParameter("author");String author=new String(s、getBytes("ISO8859_1"),"gb2312"); 在从数据库取出展示到页面时,也要经过如下转换:String s=rs、getString("author");String author=new String(s、getBytes("GB2312"),"ISO8859_1");以上就是我总结得对三种Jsp文件中文乱码得处理方法,希望对大家有所帮助、5、在数据库定义字段得时候,可以选择char还有varchar,您一般选择什么,为什么?选择varchar,因为varchar就是可变长得字符型,而char就是定长得5、为什么要用struts自身带得text框,它与HTML得有什么区别?在jsp中<html:text>经java解释后就变成了<input type="text"> 两者就是等价得在jsp页面中之所以要用<html:text>就是因为struts结构中许要在actionform中直接根据<html:text>中得属性poperty与actionform中得字段一一对应取值不许要普通<input>采用ruquest、getP*()来去值怎么导入现有得数据库,它得备份为**、bak还原数据库或者附加数据6、在中文编程中,您使用得服务器就是TOMCAT,如果出现乱码,您就是怎么解决得?方法一:更改页面字符集方法二:在tomcat得server、xml中更改字符集JAVA连接sqlserver需要哪些jar包?mssqlserver、jar7、如果我要实现上传图片,然后再另一个页面显示,我应该怎么做?应该把上传得图片输出到服务器下面得某一个文件夹,这样可以保证本机图片删除以后任何页面都可以访问并且显示、安装sqlserver时,经常会出现安装问题,例如会出现说“某某文件被挂起,安装运行程序之前请重新启动计算机”,您就是否也遇见过这样得问题?遇到过,只要把暴风影音或者网络电视卸载就可以解决、8、如果我要从配置文件中读取中文汉字,显示到JSP页面上?如果出现乱码我应该怎么处理?str、getBytes("iso8859_1"), "gb2312");怎么去更改sqlserver得字符集?可以用下面语句改变数据库得字符集。

jsp用户上传头像、上传图片、邮件上传附件代码

jsp用户上传头像、上传图片、邮件上传附件代码

jsp用户上传头像、上传图片、邮件上传附件代码jsp教程用户上传头像、上传图片、邮件上传附件代码2. 页面表单的实现文件上传表单和普通表单有两个区别1) 需要文件上传字段<input type=”file” />2) form 表单的 enctype 属性需要指定为 multipart/form-data3. 服务器端解析request在 Servlet 中通过 request.getInputStream 获得表单上传数据,会发现数据是分段发送的由于自己写程序解析有难度,我们可以使用Apache 开发的开源组件Commons-fileupload需要导入 jar 包Commons-fileupload 和Commons-io4 . UploadServlet 中处理文件上传程序// 1. 创建工厂类DiskFileItemFactory factory = new DiskFileItemFactory();// 2. 创建FileUpload对象ServletFileUpload upload = new ServletFileUpload(factory);// 3. 判断是否是上传表单boolean b = upload.isMultipartContent(request);if(!b) {// 不是文件上传request.setAttribute("message", "对不起,不是文件上传表单!");request.getRequestDispatcher("/message.jsp").forward(requ est, response);return;}// 是文件上传表单// 4. 解析request,获得FileItem项List<FileItem> fileitems = upload.parseRequest(request); // 5. 遍历集合for(FileItem item : fileitems) {// 判断是不是普通字段if(item.isFormField()) {String name = item.getFieldName();String value = item.getString();// 手工的转换了value = new String(value.getBytes("iso-8859-1"),"utf-8"); System.out.println(name + "=" + value);} else {// 文件上传字段// 获得文件名String filename = item.getName();System.out.println(filename);filename = filename.substring(stIndexOf("")+1);System.out.println(filename);// 创建文件ServletContext context = getServletContext();String dir = context.getRealPath("WEN-INF/upload");File file = new File(dir, filename);file.createNewFile();// 获得流,读取数据写入文件InputStream in = item.getInputStream(); FileOutputStream fos = new FileOutputStream(file);int len;byte[] buffer = new byte[1024];while((len=in.read(buffer))>0)fos.write(buffer,0,len);fos.close();in.close();item.delete(); // 删除临时文件}二、文件上传处理细节1. 中文乱码问题1) 文件名中文乱码问题,解决办法:告诉文件上传组件以什么编码方式来解码文件名ServletUpload.setCharacterEncoding(“utf-8”);request. setCharacterEncoding(“utf-8”);2) 普通字段中文乱码问题fileitem.getString(“utf-8”);2. 临时文件对于大文件不能缓存在内存,需要缓存到硬盘,为了方便管理,我们需要设置临时文件存放目录// 设置临时文件的存放位置factory.setRepository(new File("d:/temp"));文件上传完毕需要删除临时文件,否则会导致服务器存在两份上传文件// 注意,需要先将流进行关闭,否则会导致临时文件无法删除out.close();in.close();// 删除临时文件fileitem.delete();3. 文件存放目录1) 目录需要隐藏,禁止外界直接访问2) 文件名需要保证不重复3) 文件应该分目录存放三、上传进度条1. 实现进度监听需要实现对文件上传进度的监听,需要给FileUpload 对象添加ProgressListener在upload方法中对与进度相关的数据进行处理upload.setProgressListener(new ProgressListener() {long num = 0;public void update(long bytesRead, long contentLength, int items) {long progress = bytesRead*100/contentLength;if(progress==num)return;num = progress;System.out.println("上传进度:" + progress + "%");// request.getSession().setAttribute("progress", progress);}});2. 在 jsp 页面显示进度实验:1) 使用 iframe 发送请求,请求一个Servlet, 在Servlet 中返回响应,发送自增的num此时会发现 iframe 会不停第想Servlet发送请求2) 点击文件上传按钮后,iframe立刻停止刷新,直至上传完毕页面跳转至新页面3)为了观察实验结果,将form 的target 指定为iframe,UploadServlet回送上传完毕的结果4) 出现上述问题的原因,浏览器不支持多线程同时访问服务器只能同时发送一个请求,这样的访问方式为同步访问5) 要在文件上传的同时在iframe中实现进度访问,就需要ie浏览器与服务器进行异步交互此时就需要 XMLHttpRequest 对象在网页特效中可以直接使用XMLHttpRequest 对象与服务器进行异步通信获得XmlHttpRequest 对象的方式有两种ie7以上版本var xhr = null;if(window.XMLHttpRequest)xhr = new XMLHttpRequest();ie7以下版本if(window.ActiveXObject)xhr = new ActiveXObject(“Microsoft.XMLHTTP”);获得对象后需要调用open方法输入请求地址注意请求方式,地址的输入,并且需要设置为true 指定异步访问该地址xhr.open(“get”,”/upload/servlet/UploadServlet”, false)// 调用send 方法发送请求,post方式需要发送消息体,get方式则不用直接传入null值xhr.send(null);// 访问 responseT ext 属性获得 Servlet 回送的数据document.write(xhr.responseText);四、 api方法1. DiskFileItemFactory 对象设置缓冲区大小,字节为单位,默认为10K,一般不用修改factory.setSizeThreshold(1000);设置临时文件存放目录factory.setRepository(file);2. ServletFileUpload 对象判断是否为文件上传表单boolean b = upload.isMultipartContent(request);解析request对象List<FileItem> list = upload.parseRequest(request);设置上传文件的最大值setFileSizeMax(long fileSizeMax)设置上传文件总量的最大值setSizeMax(long sizeMax)设置编码格式setHeaderEncoding(ng.String encoding)注册进度监听器setProgressListener(ProgressListener pListener)3. FileItem 对象获得表单字段的属性名item.getFieldName();获得普通字段的值item.getString(charsetName)获得文件上传字段的文件名item.getName()获得文件上传的流item.getInputStream()文件上传时需要注意的问题:1.如何设置上传文件最大值,并实现超出最大值时给用户一个友好提示upload.setFileSizeMax(1024*10); //设置最大值实现超出最大值时给用户一个友好提示:在程序中捕获FileUploadBase.FileSizeLimitExceededException只要程序抛出这个异常,代表用户上传的文件超出最大值2.上传过程中的乱码问题2.1 普通输入项的乱码item.getString("码表 ")2.2 上传文件名的乱码ServletFileUpload.setHeaderEncoding("码表")3.上传文件的安全性问题为防止用户直接上传文件,危害服务器安全,程序应禁止用户直接访问上传文件(即把上传文件保存在用户无法直接访问的目录)4.防止文件覆盖(UUID)5.文件打散存储(一个目录下面不能存超出1000个文件)用hash算法生成目录保存6.设置监听器,监听文件上传进度upload.setProgressListener(newProgressListener(){public void update(long arg0, longarg1, int arg2) {System.out.println("当前已上传" +arg0 + ",当前处理的文件总大小" + arg1);}});7.临时文件的删除问题处理完每一个文件上传后,一定要记得调用Fileitem.delete方法,删除临时文件8.限定上传文件类型判断上传文件后缀名。

java的imageview使用方法

java的imageview使用方法

java的imageview使用方法ImageView是Android中提供的一种用于显示图片的控件,使用起来非常的方便。

在Java中,也可以使用ImageView对图片进行操作和展示。

下面将介绍一下Java中的ImageView使用方法。

步骤一:创建一个ImageView控件创建ImageView的方法如下:```ImageView imageView = new ImageView();```这里可以根据需要设置控件的宽度、高度、位置等属性。

步骤二:加载图片资源要使ImageView真正展示图片,需要将图片资源加载到ImageView中。

可以使用以下方法将图片资源加载到ImageView中:```Image image = new ImageIcon("图片路径").getImage(); imageView = new ImageView(image);```上面的代码中,首先通过ImageIcon构造函数将图片资源路径传入,得到一个ImageIcon对象,然后通过getImage()方法获取到Image对象,最后将Image对象加载到ImageView中。

步骤三:设置图片大小如果需要对图片的大小进行控制,可以使用以下方法:```imageView.setFitWidth(300);imageView.setFitHeight(200);```上面的代码中,首先使用setFitWidth()方法设置图片的宽度,使用setFitHeight()方法设置图片的高度。

步骤四:设置图片位置在Java中,ImageView控件的位置可以在父控件中设置。

可以使用以下方法将ImageView添加到父控件中:```pane.getChildren().add(imageView);```其中,pane是父控件的名字。

步骤五:显示图片最后一步是显示图片,只需启动Java应用程序即可显示图片。

jspstruts1struts2上传文件

jspstruts1struts2上传文件

一.在JSP环境中利用Commons-fileupload组件实现文件上传1.页面upload.jsp清单如下:Java代码1.<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>2.3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4.01 Transitional//EN">4.<html>5. <head>6. <title>The FileUpload Demo</title>7. </head>8.9. <body>10. <form action="UploadFile" method="post" enctype="multipart/form-data">11. <p><input type="text" name="fileinfo" value="">文件介绍</p>12. <p><input type="file" name="myfile" value="阅读文件"></p>13. <p><input type="submit" value="上传"></p>14. </form>15. </body>16.</html>注意:在上传表单中,既有一般文本域也有文件上传域2.FileUplaodServlet.java清单如下:Java代码1.package org.chris.fileupload;2.3.import java.io.File;4.import java.io.IOException;5.import java.util.Iterator;6.import java.util.List;7.8.import javax.servlet.ServletException;9.import javax.servlet.http.*;10.11.import org.apachemons.fileupload.FileItem;12.import org.apachemons.fileupload.FileItemFactory;13.import org.apachemons.fileupload.disk.DiskFileItemFactory;14.import org.apachemons.fileupload.servlet.ServletFileUpload;15.16.public class FileUplaodServlet extends HttpServlet {17.18. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {19. doPost(request, response);20. }21.22. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {23.24. request.setCharacterEncoding("UTF-8");25.26. //文件的上传部份27. boolean isMultipart = ServletFileUpload.isMultipartContent(request);28.29. if(isMultipart)30. {31. try {32. FileItemFactory factory = new DiskFileItemFactory();33. ServletFileUpload fileload = new ServletFileUpload(factory);34.35.// 设置最大文件尺寸,那个地址是4MB36. fileload.setSizeMax(4194304);37. List<FileItem> files = fileload.parseRequest(request);38. Iterator<FileItem> iterator = files.iterator();39. while(iterator.hasNext())40. {41. FileItem item = iterator.next();42. if(item.isFormField())43. {44. String name = item.getFieldName();45. String value = item.getString();46. System.out.println("表单域名为: " + name + "值为: " + value);47. }else48. {49. //取得取得文件名,此文件名包括途径50. String filename = item.getName();51. if(filename != null)52. {53. File file = new File(filename);54. //若是此文件存在55. if(file.exists()){56. File filetoserver = new File("d:\\upload\\",file.getName());57. item.write(filetoserver);58. System.out.println("文件 " + filetoserver.getName() + " 上传成功!!");59. }60. }61. }62. }63. } catch (Exception e) {64. System.out.println(e.getStackTrace());65. }66. }67. }68.}3.web.xml清单如下:Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.<web-app version="2.4"3. xmlns="java.sun/xml/ns/j2ee"4. xmlns:xsi="/2001/XMLSchema-instance"5. xsi:schemaLocation="java.sun/xml/ns/j2ee6. java.sun/xml/ns/j2ee/web-app_2_4.xsd">7.8. <servlet>9. <servlet-name>UploadFileServlet</servlet-name>10. <servlet-class>11. org.chris.fileupload.FileUplaodServlet12. </servlet-class>13. </servlet>14.15. <servlet-mapping>16. <servlet-name>UploadFileServlet</servlet-name>17. <url-pattern>/UploadFile</url-pattern>18. </servlet-mapping>19.20. <welcome-file-list>21. <welcome-file>/Index.jsp</welcome-file>22. </welcome-file-list>23.24.</web-app>二.在strut1.2中实现1.上传页面file.jsp 清单如下:Java代码1.<%@ page language="java" pageEncoding="ISO-8859-1"%>2.<%@ taglib uri="/struts/tags-bean" prefix="bean"%>3.<%@ taglib uri="/struts/tags-html" prefix="html"%>4.5.<html>6. <head>7. <title>JSP for FileForm form</title>8. </head>9. <body>10. <html:form action="/file" enctype="multipart/form-data">11. <html:file property="file1"></html:file>12. <html:submit/><html:cancel/>13. </html:form>14. </body>15.</html>2.FileAtion.java的清单如下:Java代码1./*2. * Generated by MyEclipse Struts3. * Template path: templates/java/JavaClass.vtl4. */5.package action;6.7.import java.io.*;8.9.import javax.servlet.http.HttpServletRequest;10.import javax.servlet.http.HttpServletResponse;11.import org.apache.struts.action.Action;12.import org.apache.struts.action.ActionForm;13.import org.apache.struts.action.ActionForward;14.import org.apache.struts.action.ActionMapping;15.import org.apache.struts.upload.FormFile;16.17.import form.FileForm;18.19./**20. * @author Chris21. * Creation date: 6-27-202022. *23. * XDoclet definition:24. * @struts.action path="/file" name="fileForm" input="/file.jsp"25. */26.public class FileAction extends Action {27. /*28. * Generated Methods29. */30.31. /**32. * Method execute33. * @param mapping34. * @param form35. * @param request36. * @param response37. * @return ActionForward38. */39. public ActionForward execute(ActionMapping mapping, ActionForm form,40. HttpServletRequest request, HttpServletResponse response) {41. FileForm fileForm = (FileForm) form;42. FormFile file1=fileForm.getFile1();43. if(file1!=null){44. //上传途径45. String dir=request.getSession(true).getServletContext().getRealPath("/upload");46. OutputStream fos=null;47. try {48. fos=new FileOutputStream(dir+"/"+file1.getFileName());49. fos.write(file1.getFileData(),0,file1.getFileSize());50. fos.flush();51. } catch (Exception e) {52. // TODO Auto-generated catch block53. e.printStackTrace();54. }finally{55. try{56. fos.close();57. }catch(Exception e){}58. }59. }60. //页面跳转61. return mapping.findForward("success");62. }63.}3.FileForm.java的清单如下:Java代码1.package form;2.3.import javax.servlet.http.HttpServletRequest;4.import org.apache.struts.action.ActionErrors;5.import org.apache.struts.action.ActionForm;6.import org.apache.struts.action.ActionMapping;7.import org.apache.struts.upload.FormFile;8.9./**10. * @author Chris11. * Creation date: 6-27-202012. *13. * XDoclet definition:14. * @struts.form name="fileForm"15. */16.public class FileForm extends ActionForm {17. /*18. * Generated Methods19. */20. private FormFile file1;21. /**22. * Method validate23. * @param mapping24. * @param request25. * @return ActionErrors26. */27. public ActionErrors validate(ActionMapping mapping,28. HttpServletRequest request) {29. // TODO Auto-generated method stub30. return null;31. }32.33. /**34. * Method reset35. * @param mapping36. * @param request37. */38. public void reset(ActionMapping mapping, HttpServletRequest request) {39. // TODO Auto-generated method stub40. }41.42. public FormFile getFile1() {43. return file1;44. }45.46. public void setFile1(FormFile file1) {47. this.file1 = file1;48. }49.}4.struts-config.xml的清单如下:Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "/d tds/struts-config_1_2.dtd">3.4.<struts-config>5. <data-sources />6. <form-beans >7. <form-bean name="fileForm" type="form.FileForm" />8.9. </form-beans>10.11. <global-exceptions />12. <global-forwards />13. <action-mappings >14. <action15. attribute="fileForm"16. input="/file.jsp"17. name="fileForm"18. path="/file"19. type="action.FileAction"20. validate="false">21. <forward name="success" path="/file.jsp"></forward>22. </action>23.24. </action-mappings>25.26. <message-resources parameter="ApplicationResources" />27.</struts-config>5.web.xml代码清单如下:Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.<web-app xmlns="java.sun/xml/ns/j2ee" xmlns:xsi="w/2001/XMLSchema-instance" version="2.4" xsi:schemaLocatio n="java.sun/xml/ns/j2ee java.sun/xml/ns/j2ee/web-app_2_4.xsd">3. <servlet>4. <servlet-name>action</servlet-name>5. <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>6. <init-param>7. <param-name>config</param-name>8. <param-value>/WEB-INF/struts-config.xml</param-value>9. </init-param>10. <init-param>11. <param-name>debug</param-name>12. <param-value>3</param-value>13. </init-param>14. <init-param>15. <param-name>detail</param-name>16. <param-value>3</param-value>17. </init-param>18. <load-on-startup>0</load-on-startup>19. </servlet>20. <servlet-mapping>21. <servlet-name>action</servlet-name>22. <url-pattern>*.do</url-pattern>23. </servlet-mapping>24.</web-app>三.在struts2中实现(以图片上传为例)1.FileUpload.jsp代码清单如下:Java代码1.<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>2.<%@ taglib prefix="s" uri="/struts-tags" %>3.<html>4. <head>5. <title>The FileUplaodDemo In Struts2</title>6. </head>7.8. <body>9. <s:form action="fileUpload.action" method="POST" enctype="multipart/form-data">10. <s:file name="myFile" label="MyFile" ></s:file>11. <s:textfield name="caption" label="Caption"></s:textfield>12. <s:submit label="提交"></s:submit>13. </s:form>14. </body>15.</html>2.ShowUpload.jsp的功能清单如下:Java代码1.<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>2.<%@ taglib prefix="s" uri="/struts-tags" %>3.<html>4. <head>5. <title>ShowUpload</title>6. </head>7.8. <body>9. <div style ="padding: 3px; border: solid 1px #cccccc; text-align: center" >10. <img src ='UploadImages/<s:property value ="imageFileName"/> '/>11. <br />12. <s:property value ="caption"/>13. </div >14. </body>15.</html>3.FileUploadAction.java的代码清单如下:Java代码1.package com.chris;2.3.import java.io.*;4.import java.util.Date;5.6.import org.apache.struts2.ServletActionContext;7.8.9.import com.opensymphony.xwork2.ActionSupport;10.11.public class FileUploadAction extends ActionSupport{12.13. private static final long serialVersionUID = 572146812454l;14. private static final int BUFFER_SIZE = 16 * 1024 ;15.16. //注意,文件上传时<s:file/>同时与myFile,myFileContentType,myFileFileName绑定17. //因此同时要提供myFileContentType,myFileFileName的set方式18.19. private File myFile; //上传文件20. private String contentType;//上传文件类型21. private String fileName; //上传文件名22. private String imageFileName;23. private String caption;//文件说明,与页面属性绑定24.25. public void setMyFileContentType(String contentType) {26. System.out.println("contentType : " + contentType);27. this .contentType = contentType;28. }29.30. public void setMyFileFileName(String fileName) {31. System.out.println("FileName : " + fileName);32. this .fileName = fileName;33. }34.35. public void setMyFile(File myFile) {36. this .myFile = myFile;37. }38.39. public String getImageFileName() {40. return imageFileName;41. }42.43. public String getCaption() {44. return caption;45. }46.47. public void setCaption(String caption) {48. this .caption = caption;49. }50.51. private static void copy(File src, File dst) {52. try {53. InputStream in = null ;54. OutputStream out = null ;55. try {56. in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);57. out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);58. byte [] buffer = new byte [BUFFER_SIZE];59. while (in.read(buffer) > 0 ) {60. out.write(buffer);61. }62. } finally {63. if ( null != in) {64. in.close();65. }66. if ( null != out) {67. out.close();68. }69. }70. } catch (Exception e) {71. e.printStackTrace();72. }73. }74.75. private static String getExtention(String fileName) {76. int pos = stIndexOf(".");77. return fileName.substring(pos);78. }79.80.@Override81. public String execute() {82. imageFileName = new Date().getTime() + getExtention(fileName);83. File imageFile = new File(ServletActionContext.getServletContext().getRealPath("/UploadImages" ) + "/" + imageFileN ame);84. copy(myFile, imageFile);85. return SUCCESS;86. }87.}注:现在仅为方便实现Action因此继承ActionSupport,并Overrider execute()方式在struts2中任何一个POJO都能够作为Action4.struts.xml清单如下:Java代码1.<?xml version="1.0" encoding="UTF-8" ?>2.<!DOCTYPE struts PUBLIC3. "-//Apache Software Foundation//DTD Struts Configuration2.0//EN"4. "/dtds/struts-2.0.dtd">5.<struts>6. <package name="example" namespace="/" extends="struts-default">7. <action name="fileUpload" class="com.chris.FileUploadAction">8. <interceptor-ref name="fileUploadStack"/>9. <result>/ShowUpload.jsp</result>10. </action>11. </package>12.</struts>5.web.xml清单如下:Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.<web-app version="2.4"3. xmlns="java.sun/xml/ns/j2ee"4. xmlns:xsi="/2001/XMLSchema-instance"5. xsi:schemaLocation="java.sun/xml/ns/j2ee6. java.sun/xml/ns/j2ee/web-app_2_4.xsd">7. <filter >8. <filter-name > struts-cleanup </filter-name >9. <filter-class >10. org.apache.struts2.dispatcher.ActionContextCleanUp11. </filter-class >12. </filter >13. <filter-mapping >14. <filter-name > struts-cleanup </filter-name >15. <url-pattern > /* </url-pattern >16. </filter-mapping >17.18. <filter>19. <filter-name>struts2</filter-name>20. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>21. </filter>22. <filter-mapping>23. <filter-name>struts2</filter-name>24. <url-pattern>/*</url-pattern>25. </filter-mapping>26. <welcome-file-list>27. <welcome-file>Index.jsp</welcome-file>28. </welcome-file-list>29.30.</web-app>。

jeecg jimageupload onchange 改变返回值 -回复

jeecg jimageupload onchange 改变返回值 -回复

jeecg jimageupload onchange 改变返回值-回复题目:jeecg jimageupload onchange 改变返回值摘要:jeecg jimageupload是一种用于前端图片上传的插件。

在使用该插件的过程中,有时会遇到需要改变返回值的情况。

本文将一步一步地介绍如何通过改变该插件的返回值来满足特定需求。

第一步:了解jeecg jimageupload插件jeecg jimageupload是一种基于java开发的前端图片上传插件,用于实现图片的上传及预览功能。

该插件支持图片文件的选择,即当用户选择图片文件后,插件会自动显示图片的预览,并将选择的图片文件上传至指定的后台服务器。

第二步:确认需求在使用jeecg jimageupload插件的过程中,我们可能会遇到需要改变插件返回值的情况。

具体需求可能有多种,例如需要将返回值作为参数传递给其他函数或模块,或是需要对返回值进行进一步处理等。

在确认需求的同时,也需要对返回值的格式和内容进行分析和了解。

第三步:查看插件文档及源码为了实现对jeecg jimageupload插件返回值的改变,我们需要深入了解插件的使用文档以及源码。

文档中可能会包含关于返回值的相关说明和示例。

而源码则是我们进一步修改返回值的关键。

通过阅读源码,我们可以了解插件是如何处理返回值的,从而确定我们需要对哪些部分进行修改。

第四步:修改插件源码根据我们的需求,找到需要修改的部分,并进行相应的代码更改。

需要注意的是,在修改源码时,要确保不会对插件的其他功能或原有的使用方式产生不良影响。

在修改前,最好进行备份以防止意外情况发生。

第五步:验证修改效果在修改完成后,需要进行测试来验证修改的有效性。

可以通过使用插件的示例页面或自建的测试页面来进行测试。

测试过程中需要关注的是修改后的返回值格式、内容以及是否满足需求等方面。

如果测试结果符合预期,即返回值发生了改变并满足需求,那么我们的工作就完成了。

微信小程序图片上传java后台(前后端代码)

微信小程序图片上传java后台(前后端代码)

微信⼩程序图⽚上传java后台(前后端代码)⼩程序代码upload:function(e){var that = this;wx.showActionSheet({itemList: ['从相册选择','拍照'],itemColor:"#f7982a",success:function(res){if(!res.cancer){if (res.tapIndex==0){that.chooseWxImageShop('album');} else if (res.tapIndex == 1) {that.chooseWxImageShop('camera')}}}})},chooseWxImageShop: function (type) {var that = this;wx.chooseImage({sizeType: ['original', 'compressed'],sourceType: [type],success: function (res) {/*上传单张that.data.orderDetail.shopImage = res.tempFilePaths[0],that.upload_file(API_URL + 'shop/shopIcon', res.tempFilePaths[0])*/// 上传多张(遍历数组,⼀次传⼀张)for (var index in res.tempFilePaths) {that.upload_file('后台接⼝地址', res.tempFilePaths[index])}}})},upload_file: function (url, filePath) {var that = this;wx.uploadFile({url: url,filePath: filePath,name: 'imagefile',header: {'content-type': 'multipart/form-data'}, // 设置请求的 headerformData: { 'guid':"procomment" }, // HTTP 请求中其他额外的 form datasuccess: function (res) {console.log(JSON.parse(res.data).msg)},fail: function (res) {}})}后台代码public String doUpload(HttpServletRequest request, HttpServletResponse response,@RequestParam(value = "imagefile", required = false) MultipartFile imagefile)throws Exception {try {String type = imagefile.getOriginalFilename().substring(imagefile.getOriginalFilename().lastIndexOf(".")).toLowerCase();File targetFile = new File("D:/images/upload/" , type);if (!targetFile.exists()) {targetFile.mkdirs();}imagefile.transferTo(targetFile);return type} catch (Exception e) {return "上传失败"}。

将图片转成base64字符串并在JSP页面显示的Java代码

将图片转成base64字符串并在JSP页面显示的Java代码

将图片转成base64字符串并在JSP页面显示的Java代码*本事例主要讲了如下几点: * 1:将图片转换为BASE64加密字符串. * 2:将图片流转换为BASE64加密字符串. * 3:将BASE64加密字符串转换为图片.* 4:在jsp文件中以引用的方式和BASE64加密字符串方式展示图片.首先看工具类:import ;import ;import ;import ;import ;import ;import ;import ;import ;/*** @author IluckySi1* @since*/public class ImageUtil {private static BASE64Encoder encoder = new ;private static BASE64Decoder decoder = new ;/*** 将图片转换为BASE64加密字符串.* @param imagePath 图片路径.* @param format 图片格式.* @return*/public String convertImageT oByte(String imagePath, String format) { File file = new File(imagePath);BufferedImage bi = null;ByteArrayOutputStream baos = null;String result = null;try {bi = ImageIO.read(file);baos = new ByteArrayOutputStream();ImageIO.write(bi, format == null ? "jpg" : format, baos);byte[] bytes = baos.toByteArray();result = encoder.encodeBuffer(bytes).trim();"将图片转换为BASE64加密字符串成功!");} catch (IOException e) {"将图片转换为BASE64加密字符串失败: " + e);} finally {try {if(baos != null) {baos.close();baos = null;}} catch (Exception e) {"关闭文件流发生异常: " + e);}3。

图片上传的设计与实现

图片上传的设计与实现

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊图片上传的设计与实现二.设计目的运用jsp开发工具和数据库开发一个小型的基于Web系统。

要求提交详细的设计说明书及各步骤所需图表和文档,对复杂的代码段和程序段,应画出程序流程图。

在界面设计中,画出每个窗口的布局。

通过本实践性教学环节,能较好地巩固jsp基本知识,jsp连接数据库实现动态网页。

三.需求分析如今时代,互联网已经进入我们的生活,而互联网上就有图片上传,显示,访问等等功能,有着很大的市场空间。

图片上传必须实现:1.数据库访问模块:利用JavaBean封装对数据库的操作,主要包括连接数据库、添加、删除、查询数据表、关闭连接等功能;2.上传模块:通过上传组件实现图片的上传。

3.显示模块:提供图片信息列表的显示效果。

4.查看模块:点击可以显示图片的内容。

四.总体设计图片上传是指客户端通过Web应用程序将本地图片资源传输到服务器上。

在客户端需要显示图片时,服务器端将图片通过网络以流的形式发送给客户端,然后利用不同的形式显示图片。

图片上传必须要对电子相册有,用户注册,用户注册,添加相片,修改相册,用户反馈,管理用户,如图1所示。

图1 总体设计┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊1.文件上传组件介绍文件上传组件是一些开源组织发布的针对实现文件上传功能的一组class 文件。

jspSmartUpload和Apache的common-fileupload是两个比较流行的文件上传组件。

这两个组件都可以在JSP中实现文件上传。

本节使用Apache的common-fileupload组件实现图片上传。

2.HTML中文件上传组件介绍HTML中<input type="file"/>元素可以创建文件上传组件。

该控件带有一个文本框和浏览按钮。

使用该组件时要注意以下几点。

百度ueditor富文本编辑器实现上传文件、图片、视频到ftp服务器并在页面端回显

百度ueditor富文本编辑器实现上传文件、图片、视频到ftp服务器并在页面端回显

百度ueditor富⽂本编辑器实现上传⽂件、图⽚、视频到ftp服务器并在页⾯端回显之前⼀直⽤ueditor作为富⽂本编辑器,想要实现图⽚上传到ftp的功能,⽹上搜索了⼀圈,发现都感觉讲的不是很明⽩,⽽且有不少要引⼊其他的java代码,最近⾃⼰试了⼀下,终于调通了,希望能帮到各位。

废话不多说,查看步骤。

(注意,这个是springboot版本,其实springmvc的也差不多,有⼀点点不同,最后我会说明)1.将utf8-jsp的整个⽂件夹复制到resources的static⽬录下,打开之后⽬录如下。

项⽬⽬录如下(我多加了⼀层ueditor⽬录,不过也⼀样)2.写两个controller,代码如下(请忽略楼主潦草的代码,⾃⼰拿回去调整⼀下,修改⼀下UploadController中ftp的地址,密码即可,总共有三个地⽅)1.UploadControllerpackage com.wang.controller;import lombok.extern.slf4j.Slf4j;import mons.fileupload.FileItem;import mons.fileupload.disk.DiskFileItemFactory;import mons.fileupload.servlet.ServletFileUpload;import .ftp.FTP;import .ftp.FTPClient;import .ftp.FTPConnectionClosedException;import .ftp.FTPReply;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import javax.imageio.ImageIO;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.awt.image.BufferedImage;import java.io.*;import .URLEncoder;import java.text.SimpleDateFormat;import java.util.*;@RequestMapping("/ueditor/file")@Controller@Slf4jpublic class UploadController {private FTPClient ftpClient = new FTPClient();private Logger logger = LoggerFactory.getLogger(UploadController.class);//上传图⽚并回显@RequestMapping("/uploadImg")@ResponseBodypublic Map<String,Object> upload(HttpServletRequest request) throws Exception {Map<String ,Object> map = new HashMap<>();// 判断enctype属性是否为multipart/form-databoolean isMultipart = ServletFileUpload.isMultipartContent(request);if (!isMultipart)throw new IllegalArgumentException("上传内容不是有效的multipart/form-data类型.");// Create a factory for disk-based file itemsDiskFileItemFactory factory = new DiskFileItemFactory();// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);FileItem item = (FileItem) iter.next();// 如果是⽂件字段String fieldName = item.getFieldName();String orginFileName = item.getName();String imgSunffix = orginFileName.substring(stIndexOf(".")); String uuid = UUID.randomUUID().toString().replaceAll("-", "");String fileName = uuid+imgSunffix;// String contentType = item.getContentType();// boolean isInMemory = item.isInMemory();// long sizeInBytes = item.getSize();// String filePath = STORE_FILE_DIR + fileName;//写⼊⽂件到当前服务器磁盘// File uploadedFile = new File(filePath);SimpleDateFormat formatPath = new SimpleDateFormat("yyMMdd");SimpleDateFormat fromahhPath = new SimpleDateFormat("HH");String yyMMdd = formatPath.format(new Date());String hours = fromahhPath.format(new Date());String ftpfilePath = yyMMdd + "/" + hours;// FileInputStream fileInputStream = (FileInputStream) item.getInputStream(); InputStream inputStream = item.getInputStream();BufferedInputStream bufferedInputStream = null;bufferedInputStream = new BufferedInputStream(inputStream);FTPClient ftp = new FTPClient();try {int reply;ftp.connect("11111", 21);// 连接FTP服务器// 如果采⽤默认端⼝,可以使⽤ftp.connect(url)的⽅式直接连接FTP服务器 ftp.login("11111", "11111");// 登录ftp.setFileType(FTP.BINARY_FILE_TYPE);ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);reply = ftp.getReplyCode();if(!FTPReply.isPositiveCompletion(reply)){ftp.disconnect();throw new IOException("ftp登录失败");}for (String str:ftpfilePath.split("/")){ftp.makeDirectory(str);ftp.changeWorkingDirectory(str);}boolean tag = ftp.appendFile(fileName,bufferedInputStream);if(!tag){throw new Exception("保存到FTP失败");}}catch (Exception e){e.printStackTrace();}finally {try {inputStream.close();ftp.logout();} catch (IOException e) {e.printStackTrace();}if(ftp.isConnected()){try {ftp.disconnect();}catch (IOException e){e.printStackTrace();}}}String path = "/"+ftpfilePath+"/"+fileName;// item.write(uploadedFile);map.put("state","SUCCESS");map.put("url",path);map.put("title",orginFileName);map.put("original",orginFileName);}// response.setCharacterEncoding("UTF-8");// response.getWriter().println("上传成功");return map;}//回显图⽚// imgPath = "ftpfile\\upload\\11.png";OutputStream os = null;ftp = new FTPClient();ftp.setConnectTimeout(1000 * 30);//设置连接超时时间ftp.setControlEncoding("utf-8");//设置ftp字符集ftp.enterLocalPassiveMode();//设置被动模式,⽂件传输端⼝设置try {int reply;ftp.connect("11111", 21);// 连接FTP服务器// 如果采⽤默认端⼝,可以使⽤ftp.connect(url)的⽅式直接连接FTP服务器ftp.login("11111", "11111");// 登录ftp.setFileType(FTP.BINARY_FILE_TYPE);ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);reply = ftp.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();throw new IOException("FTP登录失败");}//下载⽂件 FTP协议⾥⾯,规定⽂件名编码为iso-8859-1,所以读取时要将⽂件名转码为iso-8859-1//如果没有设置按照UTF-8读,获取的流是空值nullin = ftp.retrieveFileStream(new String(imgPath.getBytes("UTF-8"), "iso-8859-1"));String picType = imgPath.split("\\.")[1];BufferedImage bufImg = null;bufImg = ImageIO.read(in);os = response.getOutputStream();ImageIO.write(bufImg, picType, os);} catch (IOException e) {e.printStackTrace();} finally {try {in.close();// 在这⾥关闭,保证⼀定要关闭ftp.logout();// 在这⾥登出,保证⼀定要登出} catch (IOException e) {e.printStackTrace();}if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException ioe) {}}}response.setContentType("image/jpg");}/*** 下载⽂件到浏览器* @param response* @throws IOException*/@RequestMapping("/downloadFile.do")@ResponseBodypublic void downFile(@RequestParam("path")String path, HttpServletResponse response) throws IOException {// 获取ftp信息// 获取⽂件名称String[] strs = path.split("/");String downloadFile = strs[strs.length - 1];try {// 设置⽂件ContentType类型,这样设置,会⾃动判断下载⽂件类型response.setContentType("application/x-msdownload");// 设置⽂件头:最后⼀个参数是设置下载的⽂件名并编码为UTF-8response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(downloadFile, "UTF-8")); // 建⽴连接connectToServer();ftpClient.enterLocalPassiveMode();// 设置传输⼆进制⽂件int reply = ftpClient.getReplyCode();// ftpClient.changeWorkingDirectory("./home/ftp");if(!FTPReply.isPositiveCompletion(reply)) {ftpClient.disconnect();throw new IOException("failed to connect to the FTP Server:"+21);}// 此句代码适⽤Linux的FTP服务器String newPath = new String(path.getBytes("GBK"),"ISO-8859-1");bis = new BufferedInputStream(is);OutputStream out = response.getOutputStream();byte[] buf = new byte[1024];int len = 0;while ((len = bis.read(buf)) > 0) {out.write(buf, 0, len);}out.flush();} catch (Exception e) {e.printStackTrace();} finally {closeConnect();if (bis != null) {try {bis.close();} catch (IOException e) {e.printStackTrace();}}if (is != null) {try {is.close();} catch (IOException e) {e.printStackTrace();}}}} catch (FTPConnectionClosedException e) {logger.error("ftp连接被关闭!", e);throw e;} catch (Exception e) {logger.error("ERR : upload file "+ downloadFile+ " from ftp : failed!", e);}}/*** 连接到ftp服务器*/private void connectToServer() throws Exception {// ftpClient.connect(server,21);if (!ftpClient.isConnected()) {int reply;try {ftpClient=new FTPClient();ftpClient.connect("111111", 21);// 连接FTP服务器// 如果采⽤默认端⼝,可以使⽤ftp.connect(url)的⽅式直接连接FTP服务器ftpClient.login("111111", "111111");// 登录reply = ftpClient.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftpClient.disconnect();("connectToServer FTP server refused connection.");}}catch(FTPConnectionClosedException ex){logger.error("服务器:IP:"+21+"没有连接数!there are too many connected users,please try later", ex); throw ex;}catch (Exception e) {logger.error("登录ftp服务器【"+21+"】失败", e);throw e;}}}/**** 功能:关闭连接*/public void closeConnect() {try {if (ftpClient != null) {ftpClient.logout();ftpClient.disconnect();}} catch (Exception e) {logger.error("ftp连接关闭失败!", e);} 2.ServerControllerpackage com.wang.controller;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.baidu.ueditor.ActionEnter;import org.springframework.core.io.ClassPathResource;import org.springframework.stereotype.Controller;import org.springframework.util.ClassUtils;import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;//ueditor单独上传的controller@Controllerpublic class ServerController {@RequestMapping("/configNew")public void config(HttpServletRequest request, HttpServletResponse response){response.setContentType("application/json");// String res = ClassUtils.getDefaultClassLoader().getResource("km").getPath();// System.out.println("res:"+res);System.out.println("路径:"+ClassUtils.getDefaultClassLoader().getResource("").getPath());// String rootPath = ClassUtils.getDefaultClassLoader().getResource("../../").getPath() + "static/ueditor/jsp"; String rootPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "static/ueditor/jsp";System.out.println("root路径:"+rootPath);try {response.setCharacterEncoding("UTF-8");String exec = new ActionEnter(request, rootPath).exec();System.out.println(exec);PrintWriter writer = response.getWriter();writer.write(new ActionEnter(request, rootPath).exec());writer.flush();writer.close();} catch (IOException e) {e.printStackTrace();}}// public void getUEConfig(HttpServletRequest request, HttpServletResponse response){// org.springframework.core.io.Resource res = new ClassPathResource("config.json");// InputStream is = null;// response.setHeader("Content-Type" , "text/html");// try {// is = new FileInputStream(res.getFile());// StringBuffer sb = new StringBuffer();// byte[] b = new byte[1024];// int length=0;// while(-1!=(length=is.read(b))){// sb.append(new String(b,0,length,"utf-8"));// }// String result = sb.toString().replaceAll("/\\*(.|[\\r\\n])*?\\*/","");// JSONObject json = JSON.parseObject(result);// PrintWriter out = response.getWriter();// out.print(json.toString());// } catch (IOException e) {// e.printStackTrace();// }finally {// try {// is.close();// } catch (IOException e) {// e.printStackTrace();// }// }// }} 3.修改ueditor.config.jsvar URL = window.UEDITOR_HOME_URL || getUEBasePath();var server_url = window.location.protocol+"//"+window.location.hostname+":"+window.location.port;/*** 配置项主体。

软件工程答辩常见问题总结

软件工程答辩常见问题总结

1.我们正常写完一个JAVA文件都需要自动编译一下,这是为什么?因为我们运行程序的时候用到的不是java程序而是class程序.tomcat读的是java文件还是什么?是class文件不是java程序2.链接sqlserver的一般端口是什么?1433还有其他的端口么?tomcat的8080端口3.在java项目开发当作,你一般是怎么调试程序的?sqlserver数据库的还原以及备份?利用debug调试程序.4.如果我要给页面加过滤器控制乱码,我应该怎么做?近来在调试Jsp文件问题时,中文乱码现象经常遇到,现将处理方法总结一下,供大家参考: ①.Jsp文件页面显示乱码,这种情况比较好处理,在页面的Page指令加上如下一项就OK 了:<%@ page contentType="text/html; charset=gb2312"%>②.Jsp页面采用表单提交时,提交的数据中含有中文,这时我们获取表单数据后,展示到其它页面时也会出现乱码,解决方案是在提交处理的Servlet里接收数据时,先加上如下一行代码:request.setCharacterEncoding("gb2312");这是其中的一种作法,当页面较少时还好,如果页面较多,我每添加新的页面就要加上这句话,所以可以采用过滤器来解决,具体解决步骤如下:首先写一个过滤器类,代码如下:package demo;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class SetCharacterEncodingFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)throws IOException, ServletException {request.setCharacterEncoding("gbk");// 传递控制到下一个过滤器chain.doFilter(request, response);}public void init(FilterConfig filterConfig) throws ServletException {}}然后在web.xml文件中添加如下代码:<filter><!--为过滤器起个名字--><filter-name>Set Character Encoding</filter-name><!--过滤器类的包名.类名--><filter-class>demo.SetCharacterEncodingFilter</filter-class></filter><filter-mapping><filter-name>Set Character Encoding</filter-name><!--匹配所有的请求--><url-pattern>/*</url-pattern></filter-mapping>这样所有的请求都将交由这个过滤器处理下,这样无论我们添加多少个页面都可以放心了,不用总考虑要加那么一句代码了.③.在存取数据库时发生乱码现象,这种现象比较郁闷,处理起来相对复杂一点.首先要在数据存入数据库时,进行如下编码的转换:如我们要把含有中文的字符串存入数据库,首先:String s=request.getParameter("author");String author=new String(s.getBytes("ISO8859_1"),"gb2312");在从数据库取出展示到页面时,也要经过如下转换:String s=rs.getString("author");String author=new String(s.getBytes("GB2312"),"ISO8859_1");以上是我总结的对三种Jsp文件中文乱码的处理方法,希望对大家有所帮助.5.在数据库定义字段的时候,可以选择char还有varchar,你一般选择什么,为什么?选择varchar,因为varchar是可变长的字符型,而char是定长的5.为什么要用struts自身带的text框,它与HTML的有什么区别?在jsp中<html:text>经java解释后就变成了<input type="text"> 两者是等价的在jsp 页面中之所以要用<html:text>是因为struts结构中许要在actionform中直接根据<html:text>中的属性poperty与actionform中的字段一一对应取值不许要普通<input>采用ruquest.getP*()来去值怎么导入现有的数据库,它的备份为**.bak还原数据库或者附加数据6.在中文编程中,你使用的服务器是TOMCAT,如果出现乱码,你是怎么解决的?方法一:更改页面字符集方法二:在tomcat的server.xml中更改字符集JAVA连接sqlserver需要哪些jar包?mssqlserver.jar7.如果我要实现上传图片,然后再另一个页面显示,我应该怎么做?应该把上传的图片输出到服务器下面的某一个文件夹,这样可以保证本机图片删除以后任何页面都可以访问并且显示.安装sqlserver时,经常会出现安装问题,例如会出现说“某某文件被挂起,安装运行程序之前请重新启动计算机”,你是否也遇见过这样的问题?遇到过,只要把暴风影音或者网络电视卸载就可以解决.8.如果我要从配置文件中读取中文汉字,显示到JSP页面上?如果出现乱码我应该怎么处理?str.getBytes("iso8859_1"), "gb2312");怎么去更改sqlserver的字符集?可以用下面语句改变数据库的字符集。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

image mediumblob not null,
description varchar(100) null
);
5,应用程序的目录结构
%catalina_home%\webapps\demo
------test_upload.htm
------upload.jsp
------WEB-INF
|-------commons-fileupload-1.0.jar
|----src
|----com
|-----cf
<html>
<head>
<title>
上传测试
</title>
<body>
<form action="upload.jsp" enctype="multipart/form-data" method="post">
your name:
<br>
<input type="text" name="name">
6,web.xml文件内容
<?xml version="1.0"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"/j2ee/dtds/web-app_2_3.dtd">
<%
DiskFileUpload upload=new DiskFileUpload();
upload.setSizeThreshold(4096);
upload.setRepositoryPath("d:/java/");
upload.setSizeMax(10000000);
try{
pstmt=mydb.DbQuery(sql);
pstmt.setInt(1,photoid);
rs=pstmt.executeQuery();
while(rs.next()){
blob=rs.getBlob(1);
}
bytes=blob.getBytes(1,(int)(blob.length()));
List fileItems = upload.parseRequest(request);
Iterator i = fileItems.iterator();
String name = ((FileItem)i.next()).getString();
|----DbConnection.java
|----DbConst.java
|----DbManipulate.java
<servlet-name>photoview</servlet-name>
<url-pattern>/photoview/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>default.jsp</welcome-file>
|----web.xml
|-----build.xml
|-----lib
|-------mysql-connector-java-3.0.16-ga-bin.jar
int index=0;
if(rs.next())
{
index=rs.getInt(1);
}
//ps.close();
//fis.chose();
%>
<%=name%> <a href="javascript:history.go(-1)">go on</a>
throws ServletException,IOException{
ServletOutputStream out=response.getOutputStream();
int id=Integer.parseInt(request.getParameter("id"));
response.setContentType("image/jpeg");
PreparedStatement ps=dm.DbUpdate("insert into photo(image,description) values(?,?)");
ps.setBinaryStream(1,fis,size);
ps.setString(2,fileName);
|-----photo
|-----BlobServlet.java
|-----model
import com.cf.model.*;
public class BlobServlet extends HttpServlet{
//private static Log log = LogFactory.getLog(BlobServlet.class);
protected void doGet(HttpServletRequest request,HttpServletResponse response)
fileName = fileName.replace('\\','_');
//System.out.println(fileName);
//File savedFile = new File("d:/java/upload/",fileName);
//fi.write(savedFile);
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="mons.fileupload.*" %>
<%@ page import="com.cf.model.DbManipulate" %>
<welcome-file>index.jsp</welcome-file>
<welcome-file>test.jsp</welcome-file>
</welcome-file-list>

</web-app>
7,ant的buildfile内容
<web-app>
<servlet>
<servlet-name>photoview</servlet-name>
<servlet-class>com.cf.photo.BlobServlet</servlet-class>
</servlet>
<servlet-mapping>
FileItem fi = (FileItem)i.next();
String fileName = fi.getName();
//System.out.println(fileName);
fileName = fileName.replace(':','_');
<br>
file to process:
<input type="file" name="userfile">
<br>
<input type="submit">
</form>
</body>
</html>
2,上传的后台处理页面
---upload.jsp---
<%@ page contentType="text/html; charset=gb2312" %>
out.write(getBlob(id));
out.flush();
out.close();
}
public byte[] getBlob(int photoid){
String sql="select image from photo where id=?";
//(sql);
ps.executeUpdate();
String sql="select id from photo order by id desc limit 1";
PreparedStatement ps2=dm.DbQuery(sql);
ResultSet rs=ps2.executeQuery();
------build.xml------
<project name="buildweb" default="build" basedir=".">
Blob blob=null;
相关文档
最新文档