❶ 用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.