J2EE Servlet上傳文件到服務(wù)器并相應(yīng)顯示功能的實(shí)現(xiàn)代碼
編輯上傳文件的頁面upload.html
注意事項(xiàng):上傳方式使用POST不能使用GET(GET不能上傳文件)
表單 enctype 屬性應(yīng)該設(shè)置為 multipart/form-data.(表示提交的數(shù)據(jù)是二進(jìn)制文件)
upload.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上傳</title>
</head>
<body>
<form action="UploadPhotoServlet" method="POST" enctype="multipart/form-data">
人物名稱:<input type="text" name="heroName"/><br>
上傳頭像:<input type="file" name="filepath"/><br>
<input type="submit" value="上傳">
</form>
</body>
</html>
UPloadPtotoServlet文件上傳類--上傳功能的開發(fā)
將commons-io-1.4.jar和commons-fileupload-1.2.2.jar 兩個(gè)jar包放到WEB-INF/lib 目錄下。
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* Servlet implementation class UploadPhotoServlet
*/
@WebServlet("/UploadPhotoServlet")
public class UploadPhotoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public UploadPhotoServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// response.getWriter().append("Served at: ").append(request.getContextPath());
String filename=null;
DiskFileItemFactory factory=new DiskFileItemFactory(); //磁盤文件條目工廠
ServletFileUpload upload=new ServletFileUpload(factory); //負(fù)責(zé)處理上傳的文件數(shù)據(jù),并將表單中每個(gè)輸入項(xiàng)封裝成一個(gè)fileitem對(duì)象中
//設(shè)置上傳文件的大小為10M
factory.setSizeThreshold(2*1024*1024);
List items=null;
try {
//parse 解析
items=upload.parseRequest(request); //得到一個(gè)保存了所有上傳內(nèi)容的List對(duì)象
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Iterator iter=items.iterator(); //迭代上傳的文件數(shù)據(jù)
while(iter.hasNext()){
FileItem item=(FileItem) iter.next();
if(!item.isFormField()){ //如果不是上傳的
//根據(jù)時(shí)間戳創(chuàng)建頭像文件
filename=System.currentTimeMillis()+".jpg";
//通過getrealpath獲取上傳文件夾,如果項(xiàng)目存在將存在當(dāng)前項(xiàng)目下 不存在的話創(chuàng)建項(xiàng)目文件夾
//圖片文件夾
String photoFolder=request.getServletContext().getRealPath("uploaded");
File f=new File(photoFolder,filename);
f.getParentFile().mkdirs(); //如果父文件夾不存在則自動(dòng)創(chuàng)建
//通過item.getInputStream() 獲取瀏覽器上傳的文件
InputStream is = item.getInputStream(); //將文件讀進(jìn)來
//復(fù)制文件
FileOutputStream fos=new FileOutputStream(f); //往界面上顯示
byte[] b=new byte[2*1024*1024];
int len=0;
while((len=is.read(b))!=-1){
fos.write(b, 0, len);
}
fos.close();
}else{
System.out.println(item.getFieldName());//heroName
String value=item.getString();
value=new String(value.getBytes("ISO-8859-1"), "UTF-8");
System.out.println(value); //桑葚
}
}
String html="<img width='200' height='150' src='uploaded/%s'/>";
response.setContentType("text/html");
PrintWriter pw=response.getWriter();
pw.format(html, filename);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
運(yùn)行結(jié)果:

總結(jié)
以上所述是小編給大家介紹的J2EE Servlet上傳文件到服務(wù)器并相應(yīng)顯示功能的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
SpringBoot統(tǒng)一返回處理出現(xiàn)cannot?be?cast?to?java.lang.String異常解決
這篇文章主要給大家介紹了關(guān)于SpringBoot統(tǒng)一返回處理出現(xiàn)cannot?be?cast?to?java.lang.String異常解決的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
springboot封裝JsonUtil,CookieUtil工具類代碼實(shí)例
這篇文章主要介紹了springboot封裝JsonUtil,CookieUtil工具類過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Java創(chuàng)建類模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java創(chuàng)建類模式的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
一文徹底弄懂Java中MultipartFile接口和File類
MultipartFile是一個(gè)接口,我們可以理解為是Spring?給我們綁定的一個(gè)在使用文件上傳等時(shí)簡(jiǎn)便實(shí)現(xiàn)的口子,這篇文章主要給大家介紹了關(guān)于如何通過一文徹底弄懂Java中MultipartFile接口和File類的相關(guān)資料,需要的朋友可以參考下2023-11-11
SpringCloud分布式鏈路追蹤組件Sleuth配置詳解
這篇文章主要介紹了SpringCloud鏈路追蹤組件Sleuth配置方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-11-11
spring scheduled單線程和多線程使用過程中的大坑
本文主要介紹了spring scheduled單線程和多線程使用過程中的大坑,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Spring?Boot超大文件上傳實(shí)現(xiàn)秒傳功能
這篇文章主要介紹了Spring?Boot超大文件上傳實(shí)現(xiàn)秒傳功能,在實(shí)現(xiàn)分片上傳的過程,需要前端和后端配合,比如前后端的上傳塊號(hào)的文件大小,前后端必須得要一致,否則上傳就會(huì)有問題,需要的朋友可以參考下2022-12-12
java通過控制鼠標(biāo)實(shí)現(xiàn)屏幕廣播的方法
這篇文章主要介紹了java通過控制鼠標(biāo)實(shí)現(xiàn)屏幕廣播的方法,針對(duì)前面一篇Java屏幕共享功能進(jìn)行了改進(jìn),實(shí)現(xiàn)了鼠標(biāo)控制功能,具有一定的實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12

