❶ 用java写上传图片时,怎么实现预览功能
图片上传后在网页上直接读取上传后的地址进行预览,就是说这个时候图片已经上传到服务器了,如果要写的严谨一些,可以在预览后进行保存操作,如果不保存,则再写一条语句把上传上去的文件删除
❷ java实现图片上传下载
用java完成图片多张批量上传的功能,还有就是后台的应该怎么处理上传的照片。环境准备
1.下载并安装Tomcat(已经有很多关于Tomcat安装以及使用的文章,在这里不再介绍);
2.下载Fileupload的jar包commons-fileupload-1.0-beta-1.jar,并将该文件拷贝到{$TOMCAT}/common/lib目录下(其中{$TOMCAT}为Tomcat的安装目录);
3.由于Fileupload子项目同时要用到另外一个项目commons-Beanutils,所以必须下载Beanutils,并将解压后的文件commons-beanutils.jar拷贝到{$TOMCAT}/common/lib目录下。
开发文件上传页面
文件上传的界面如图1所示。为了增加效率我们设计了三个文件域,同时上传三个文件。
图1文件上传界面
页面的HTML代码如下:
html
head
title文件上传演示/title
/head
bodybgcolor=“#FFFFFF”text=“#000000”leftmargin=“0”topmargin=“40”marginwidth=“0”marginheight=“0”
center
h1文件上传演示/h1
formname=“uploadform”method=“POST”action=“save.jsp”ENCTYPE=“multipart/form-data”
tableborder=“1”width=“450”cellpadding=“4”cellspacing=“2”bordercolor=“#9BD7FF”
trtdwidth=“100%”colspan=“2”
文件1:inputname=“file1”size=“40”type=“file”
/td/tr
trtdwidth=“100%”colspan=“2”
文件2:inputname=“file2”size=“40”type=“file”
/td/tr
trtdwidth=“100%”colspan=“2”
文件3:inputname=“file3”size=“40”type=“file”
/td/tr
/table
br/br/
table
trtdalign=“center”inputname=“upload”type=“submit”value=“开始上传”//td/tr
/table
/form
/center
/body
/html
代码中要特别注意的是黑体处。必须保证表单的ENCTYPE属性值为multipart/form-data,这样浏览器才能正确执行上传文件的操作。
处理上传文件信息
由于本文主要是讲述如何使用Commons-fileupload,所以为了便于修改、调试,上传文件的保存使用一个JSP文件来进行处理。我们将浏览器上传来的所有文件保存在一个指定目录下并在页面上显示所有上传文件的详细信息。保存页面处理结果见图2所示。
图2保存页面
下面来看看save.jsp的代码:
%
/**
*演示文件上传的处理
*@authorahref=“mailto:[email protected]”WinterLau/a
*@version$Id:save.jsp,v1.002003/03/0110:10:15
*/
%
%@pagelanguage=“java”contentType=“text/html;charset=GBK”%
%@pageimport=“java.util.*”%
%@pageimport=“org.apache.commons.fileupload.*”%
html
head
title保存上传文件/title
/head
%
Stringmsg=“”;
FileUploadfu=newFileUpload();
//设置允许用户上传文件大小,单位:字节
fu.setSizeMax(10000000);
//?
//设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(4096);
//设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fu.setRepositoryPath(“C:\TEMP”);
//开始读取上传信息
ListfileItems=fu.parseRequest(request);
%
bodybgcolor=“#FFFFFF”text=“#000000”leftmargin=“0”topmargin=“40”marginwidth=“0”marginheight=“0”
fontsize=“6”color=“blue”文件列表:/font
center
tablecellpadding=0cellspacing=1border=1width=“100%”
tr
tdbgcolor=“#008080”文件名/td
tdbgcolor=“#008080”大小/td
/tr
%
//依次处理每个上传的文件
Iteratoriter=fileItems.iterator();
while(iter.hasNext()){
FileItemitem=(FileItem)iter.next();
//忽略其他不是文件域的所有表单信息
if(!item.isFormField()){
Stringname=item.getName();
longsize=item.getSize();
if((name==null||name.equals(“”))size==0)
continue;
%
tr
td%=item.getName()%/td
td%=item.getSize()%/td
/tr
%
//保存上传的文件到指定的目录
name=name.replace(‘:’,‘_’);
name=name.replace(‘\’,‘_’);
item.write(“F:\”+name);
}
}
%
/table
br/br/
ahref=“upload.html”返回上传页面/a
/center
/body
/html
在这个文件中需要注意的是FileUpload对象的一些参数值的意义,如下面代码所示的三个参数sizeMax、sizeThreshold、repositoryPath:
FileUploadfu=newFileUpload();
//设置允许用户上传文件大小,单位:字节
fu.setSizeMax(10000000);
//?
//设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(4096);
//设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fu.setRepositoryPath(“C:\TEMP”);
这3个参数的意义分别为:
SizeMax用来设置上传文件大小的最大值,一旦用户上传的文件大小超过该值时将会抛出一个FileUploadException异常,提示文件太大;
SizeThreshold设置内存中缓冲区的大小,一旦文件的大小超过该值的时候,程序会自动将其它数据存放在repositoryPath指定的目录下作为缓冲。合理设置该参数的值可以保证服务器稳定高效的运行;
RepositoryPath指定缓冲区目录。
使用注意事项
从实际应用的结果来看该模块能够稳定高效的工作。其中参数SizeThreshold的值至关重要,设置太大会占用过多的内存,设置太小会频繁使用硬盘作为缓冲以致牺牲性能。因此,设置该值时要根据用户上传文件大小分布情况来设定。例如大部分文件大小集中在100KB左右,则可以使用100KB作为该参数的值,当然了再大就不合适了。使用commons-fileupload来处理HTTP文件上传的功能模块很小,但是值得研究的东西很多。
javaweb开发,上传图片并读取
javaweb开发中,使用文件操作类来上传图片并读取,如下代码:
?*?@desc:?图片处理工具
?*?@author:?bingye
?*?@createTime:?2015-3-17?下午04:25:32
?*?@version:?v1.0
?*/
public?class?ImageUtil?{
?
????/**
????*?将图片写到客户端
????*?@author:?bingye
????*?@createTime:?2015-3-17?下午04:36:04
????*?@history:
????*?@param?image
????*?@param?response?void
????*/
????public?static?void?writeImage(byte[]?image,HttpServletResponse?response){
????????if(image==null){
????????????return;
????????}
????????byte[]?buffer=new?byte[1024];
????????InputStream?is=null;
????????OutputStream?os=null;
????????try?{
????????????is=new?ByteArrayInputStream(image);
????????????os=response.getOutputStream();
????????????while(is.read(buffer)!=-1){
????????????????os.write(buffer);
????????????????os.flush();
????????????}
????????}?catch?(IOException?e)?{
????????????e.printStackTrace();
????????}?finally{
????????????try?{
????????????????if(is!=null){is.close();}
????????????????if(os!=null){os.close();}
????????????}?catch?(IOException?e)?{
????????????????e.printStackTrace();
????????????}
????????}
????}
?????
????/**
????*?获取指定路劲图片
????*?@author:?bingye
????*?@createTime:?2015-3-21?上午10:50:44
????*?@param?filePath
????*?@param?response?void
????*/
????public?static?void?writeImage(String?filePath,HttpServletResponse?response){
????????File?imageFile=new?File(filePath);?
????????if(imageFile!=null??imageFile.exists()){
????????????byte[]?buffer=new?byte[1024];
????????????InputStream?is=null;
????????????OutputStream?os=null;
????????????try?{
????????????????is=new?FileInputStream(imageFile);
????????????????os=response.getOutputStream();
????????????????while(is.read(buffer)!=-1){
????????????????????os.write(buffer);
????????????????????os.flush();
????????????????}
????????????}?catch?(FileNotFoundException?e)?{
????????????????e.printStackTrace();
????????????}?catch?(IOException?e)?{
????????????????e.printStackTrace();
????????????}?finally{
????????????????try?{
????????????????????if(is!=null){is.close();}
????????????????????if(os!=null){os.close();}
????????????????}?catch?(IOException?e)?{
????????????????????e.printStackTrace();
????????????????}
????????????}
????????}
????}
?????
????/**
????*?图片上传到文件夹
????*?@author:?bingye
????*?@createTime:?2015-3-20?下午08:07:25
????*?@param?file
????*?@param?savePath
????*?@return?boolean
????*/
????public?static?ResultDto?uploadToLocal(CommonsMultipartFile?file,String?savePath){
????????if(file!=null??!file.isEmpty()){
????????????//获取文件名称
????????????String?fileName=file.getOriginalFilename();
????????????//获取后缀名
????????????String?suffixName=fileName.substring(fileName.indexOf(".")+1);
????????????//新名称
????????????String?newFileName=System.currentTimeMillis()+"."+suffixName;
????????????//新文件路劲
????????????String?filePath=savePath+newFileName;
????????????//获取存储文件路径
????????????File?fileDir=new?File(savePath);
????????????if(!fileDir.exists()){
????????????????//如果文件夹没有:新建
????????????????fileDir.mkdirs();
????????????}
????????????FileOutputStream?fos=null;
????????????try?{
????????????????fos=new?FileOutputStream(filePath);
????????????????fos.write(file.getBytes());
????????????????fos.flush();
????????????????return?ResultUtil.success("UPLOAD_SUCCESS",?URLEncoder.encode(newFileName,"utf-8"));
????????????}?catch?(Exception?e)?{
????????????????e.printStackTrace();
????????????????return?ResultUtil.fail("UPLOAD_ERROR");
????????????}?finally{
????????????????try?{
????????????????????if(fos!=null){
????????????????????????fos.close();
????????????????????}
????????????????}?catch?(IOException?e)?{
????????????????????e.printStackTrace();
????????????????????return?ResultUtil.fail("UPLOAD_ERROR");
????????????????}
????????????}
????????}
????????return?ResultUtil.fail("UPLOAD_ERROR");
????}
?????
?????
?????
}
请问用Java如何实现图片上传功能?我有一段上传图片的代码,并且可以根据实际,按月或按天等,生成存放图片的文件夹
首先在JSP上放一个FILE的标签这些我都不说了,你也一定明白,我直接把处理过程给你发过去
我把其中存到数据库中的内容删除了,你改一下就能用
/**
*
*上传图片
*@paramservlet
*@paramrequest
*@paramresponse
*@return
*@throwsException
*/
//这里我是同步上传的,你随意
(HttpServletservlet,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{
SimpleDateFormatformatDate=newSimpleDateFormat("yyyyMM");
Datenowtime=newDate();
Stringformatnowtime=formatDate.format(nowtime);
Fileroot=newFile(request.getRealPath("/")+"uploadfile/images/"+formatnowtime+"/");//应保证在根目录中有此目录的存在如果没有,下面则上创建新的文件夹
if(!root.isDirectory())
{
System.out.println("创建新文件夹成功"+formatnowtime);
root.mkdir();
}
intreturnflag=0;
SmartUploadmySmartUpload=newSmartUpload();
intfile_size_max=1024000;
Stringext="";
Stringurl="uploadfile/images/"+formatnowtime+"/";
//只允许上载此类文件
try{
//初始化
mySmartUpload.initialize(servlet.getServletConfig(),request,response);
mySmartUpload.setAllowedFilesList("jpg,gif,bmp,jpeg,png,JPG");
//上载文件
mySmartUpload.upload();
}catch(Exceptione){
response.sendRedirect()//返回页面
}
com.jspsmart.upload.