當前位置:首頁 » 文件管理 » jspservlet文件上傳

jspservlet文件上傳

發布時間: 2023-01-04 05:33:05

㈠ jsp+servlet實現文件上傳與下載源碼

上傳:
需要導入兩個包:commons-fileupload-1.2.1.jar,commons-io-1.4.jar
import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
* 上傳附件
* @author new
*
*/
public class UploadAnnexServlet extends HttpServlet {

private static String path = "";

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request, response);
}

/*
* post處理
* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

path = this.getServletContext().getRealPath("/upload");

try {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload up = new ServletFileUpload(factory);
List<FileItem> ls = up.parseRequest(request);

for (FileItem fileItem : ls) {
if (fileItem.isFormField()) {
String FieldName = fileItem.getFieldName();
//getName()返回的是文件名字 普通域沒有文件 返回NULL
// String Name = fileItem.getName();
String Content = fileItem.getString("gbk");
request.setAttribute(FieldName, Content);
} else {

String nm = fileItem.getName().substring(
fileItem.getName().lastIndexOf("\\") + 1);
File mkr = new File(path, nm);
if (mkr.createNewFile()) {
fileItem.write(mkr);//非常方便的方法
}
request.setAttribute("result", "上傳文件成功!");
}
}
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("result", "上傳失敗,請查找原因,重新再試!");
}
request.getRequestDispatcher("/pages/admin/annex-manager.jsp").forward(
request, response);
}

}

下載(i/o流)無需導包:
import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* 下載文件
* @author
*
*/
public class DownloadFilesServlet extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = 8594448765428224944L;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request, response);
}

/*
* 處理請求
* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String name = request.getParameter("fileName");

System.out.print("dddddddddd:" + name);
// web絕對路徑
String path = request.getSession().getServletContext().getRealPath("/");
String savePath = path + "upload";

// 設置為下載application/x-download
response.setContentType("application/x-download");
// 即將下載的文件在伺服器上的絕對路徑
String filenamedownload = savePath + "/" + name;
// 下載文件時顯示的文件保存名稱
String filenamedisplay = name;
// 中文編碼轉換
filenamedisplay = URLEncoder.encode(filenamedisplay, "UTF-8");
response.addHeader("Content-Disposition", "attachment;filename="
+ filenamedisplay);
try {
java.io.OutputStream os = response.getOutputStream();
java.io.FileInputStream fis = new java.io.FileInputStream(
filenamedownload);
byte[] b = new byte[1024];
int i = 0;
while ((i = fis.read(b)) > 0) {
os.write(b, 0, i);
}
fis.close();
os.flush();
os.close();
} catch (Exception e) {

}

}

}

㈡ jsp+servlet 上傳圖片並顯示出來

其實你這個擋也顯示圖片其實很簡單的,
你的需求無非是兩個
1.servlet上傳文件(圖片)
2.點擊 瀏覽 圖標,然後選擇圖片文件,然後就可以在頁面中的某個地方看到圖片

是這兩個需求么?
首先說第二個吧。
你上傳圖片之後,就馬上觸發js函數,內容為
var PicPath = document.getElementById("yourfile").value;
document.getElementById("yourDiv").innerHTML="<IMG src="+PicPath+"/>";
OK了

第一個嘛就無所謂說了,不過我還是貼一個代碼吧,
public void upLoadFile(HttpServletRequest request, HttpServletResponse response) {
PrintWriter out = null;
response.setCharacterEncoding("UTF-8");
//實例化文件工廠
FileItemFactory factory = new DiskFileItemFactory();
//配置上傳組件ServletFileUpload
ServletFileUpload upload = new ServletFileUpload(factory);
try {
out = response.getWriter();
//從request得到所有上傳域的列表
List<FileItem> list = upload.parseRequest(request);

for (FileItem item : list) {
//isFormField判斷一個item類對象封裝的是一個普通的表單欄位還是文件表單欄位。
// 如果item是文件域,則做出如下處理:
if (!item.isFormField()) {

//上傳文件域的Name
String fileName = item.getName();

//截取擴展名
int idx = fileName.lastIndexOf(".");
String extension = fileName.substring(idx);

//獲取文件名
String name = new Date().getTime() + extension;

//得到文件夾的物理路徑
String path = this.getServletContext().getRealPath("\\upload");

//創建一個File
File file = new File(path + "\\" + name);
FileOutputStream o = new FileOutputStream(file);
InputStream in = item.getInputStream();
try {
LoadProcessServlet.process = 0;
LoadProcessServlet.total = 100;
LoadProcessServlet.isEnd = false;
LoadProcessServlet.total = item.getSize();
byte b[] = new byte[1024];
int n;
while ((n = in.read(b)) != -1) {
LoadProcessServlet.process+=n;
o.write(b, 0, n);
System.out.println("實際:"+LoadProcessServlet.process);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
LoadProcessServlet.isEnd = true;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}

}

㈢ 如何在servlet得到jsp上傳的文件的文件名

可以使用commons-fileupload組件實現文件上傳,步驟如下:

1、添加jar包:commons-fileupload-x.x.x.jar和commons-io-2.4.jar
2、編寫或修改form表單
1) 提交方式必須是post
2) 為表單增加屬性enctype="multipart/form-data"
3) 為文件上傳單獨提供servlet,因為增加enctype屬性後,無法使用常規的請求對象來獲取提交的數據
3、使用Commons-FileUpload組件實現文件的上傳
1) 確定本次請求是否是文件上傳請求
boolean flag=ServletFileUpload.isMultipartContent(request);
2) 創建文件上傳的工廠對象
FileItemFactory factory=new DiskFileItemFactory();
3) 創建ServletFileUpload對象,並將工廠對象作為參數傳入
ServletFileUpload upload=new ServletFileUpload(factory);
4) 使用上傳對象從請求對象中解析出提交的所有表單元素
List<FileItem> lstForms=upload.parseRequest(request);
5) 遍歷表單元素集合,實現取出表單元素和上傳文件
//遍歷所有表單元素
for (FileItem fileItem : lstForms) {
//判斷每一個表單元素是否是普通表單
if(fileItem.isFormField()){
System.out.println(fileItem.getString("UTF-8"));
}else{
//上傳前准備工作
//a、上傳後的路徑this.getServletContext().getRealPath("/")會出去當前項目在 部署的伺服器上的絕對路徑

String path=this.getServletContext().getRealPath("/")+"files/";
//b、找出要上傳的文件的名字
String fileName=fileItem.getName();
fileName=fileName.substring(fileName.lastIndexOf("\\")+1);
//c、上傳
fileItem.write(new File(path+fileName));
out.println("<h2>"+fileName+"上傳成功!</h2>");

㈣ java jsp 怎麼上傳圖片到servlet

jsp:
<form action="up.do" method="post" enctype="multipart/form-data" id="upform"> 文件:<input type="file" name="file" id="file"/> <input type="button" id="btn" value="上傳"/> </form>

SERVLET:

FileItemFactory fileItemFactory = new DiskFileItemFactory(); ServletFileUpload fileUpload = new ServletFileUpload(fileItemFactory); //設置 中文 編碼集 fileUpload.setHeaderEncoding("UTF-8"); try { List<FileItem> fileItems= fileUpload.parseRequest(request); for (FileItem fi : fileItems) { if(fi.isFormField()){ } } } for (FileItem fileItem : fileItems) { if(fileItem.isFormField()){ }else{ //文件名 String filename = fileItem.getName(); //文件名處理 if(filename.indexOf('\\') != -1){ filename = filename.substring(filename.lastIndexOf('\\')+1); } System.out.println(filename); if(filename == null || filename.equals("")){ request.setAttribute("msg", "沒有指定上傳文件"); request.getRequestDispatcher("index.jsp").forward(request, response); //驗證碼錯誤 就退出 return; } //path 生成文件夾 String fpath = "F:\\\\中軟高科\\\\小組\\\\5組日報"+UpFileUtil.getMonthadnDate(); File file = new File(fpath); if(!file.exists()){ file.mkdir(); } //文件全路徑 fpath = fpath+"\\\\"+filename;// System.out.println(filename+"--->"+fpath+"--->"+UpFileUtil.getTime()); //寫出文件到 伺服器磁碟 InputStream in = fileItem.getInputStream();//request.getInputStream(); OutputStream out = new FileOutputStream(fpath); byte[] buff = new byte[1024*10]; while(in.read(buff) != -1){ out.write(buff); } out.flush(); out.close(); in.close(); //保存文件信息到資料庫 new UpFileDao().updFile("{call file_add(?,?,?)}",new String[]{filename,fpath,UpFileUtil.getTime()}); filename = null; fpath = null; file = null; request.setAttribute("msg", "上傳成功"); request.getRequestDispatcher("index.jsp").forward(request, response); } } } catch (Exception e) { e.printStackTrace(); }

㈤ 在servlet中怎樣上傳文件

//新建一個Smartupload對象
SmartUpload
su=new
SmartUpload();
//上傳初始化
su.initialize(pageContext);
//設定上傳限度
//1.限定每個上傳文件的最大長度
//su.setMaxFileSize(100000);
//2.限制總上傳數據的長度。
//su.setTotalMaxFileSize(20000);
//3.設定允許上傳的文件(通過擴展名限制),僅允許doc,txt文件。
//su.setAllowFilesList("doc,text");
//4.設定禁止上傳的文件(通過擴展名限制),禁止上傳帶有exe,bat,jsp,htm,html擴展名的文件或沒有擴展名的文件
//su.setDeniedDilesList("exe,bat,jsp,html,htm,,");
//上傳文件
su.upload();
//將上傳文件全部保存到指定目錄
int
count=su.save("/upload");
out.println(count+"個上傳文件成功!<br>");
//利用Request對象獲取參數之值
out.println("test="+su.getRequest().getParameter("test")+"<br><br>");
//逐一提取上傳文件信息,同時可保存文件。
for(int
i=0;i<su.getFiles().getCount();i++)
{
com.jspsmart.upload.File
file=su.getFiles().getFile(i);
//若文件不存在則繼續
if(file.isMissing())
continue;
//顯示當前文件信息
out.println("<table
border=1>");
out.println("<tr><td>表單項名(FiledName)</td><td>"+file.getFieldName()+"</tr></tr>");
out.println("<tr><td>文件長度(Size)</td><td>"+file.getSize()+"</td><td>");
out.println("<tr><td>文件名(FileName)</td><td>"+file.getFileName()+"</tr></tr>");
out.println("<tr><td>文件擴展名(FiledExt)</td><td>"+file.getFileExt()+"</tr></tr>");
out.println("<tr><td>文件全名(FiledPathName)</td><td>"+file.getFilePathName()+"</tr></tr>");
out.println("</table><br>");
//將文件另存
//file.saveAs("/upload/"+myFile.getFileName());
//另存到以web應用程序的根目錄為文件根目錄的目錄下
//file.saveAs("/upload/"+myFile.getFileName(),su.SAVE_VIRTUAL);
//另存到操作系統的根目錄為文件根目錄的目錄下
//file.safeAs("c://temp//"+myFile.getFileName(),su.SAVE_PHYSICAL);
}
上面就是了。。。。祝你好運哈!

㈥ jsp+servlet 怎麼實現文件上傳

你要做文件上傳吧 form表單里一定要設置這兩個值enctype="multipart/form-data" method="post"
上傳成功後會在tomcat里有那個文件 ,至於你說的要獲取io流。那就需要找到那個文件給你寫一下偽碼吧:
//獲得上傳文件的路徑

String path = getServletContext().getRealPath(webpath);

File file = new File(path);
file.getParentFile().mkdirs();
file.createNewFile();

// 獲得流
InputStream in = item.getInputStream();
OutputStream out = new FileOutputStream(file);
不懂的再問我!
建議你用個上傳組件,fileupload什麼的

熱點內容
台電殺毒加密u盤 發布:2025-08-27 08:13:29 瀏覽:328
如何發現伺服器的相關性能問題 發布:2025-08-27 08:07:01 瀏覽:817
編譯和執行按那個鍵 發布:2025-08-27 07:58:00 瀏覽:349
國際服體驗服如何換伺服器 發布:2025-08-27 07:08:45 瀏覽:844
c語言socket編程 發布:2025-08-27 06:51:23 瀏覽:445
我的世界國際版最火的伺服器 發布:2025-08-27 06:40:26 瀏覽:597
為什麼登錄小馬鎮顯示密碼錯誤 發布:2025-08-27 06:20:38 瀏覽:896
php訂單號 發布:2025-08-27 06:20:37 瀏覽:617
我的世界伺服器娘清理 發布:2025-08-27 06:19:08 瀏覽:799
kmp手機ftp 發布:2025-08-27 06:09:57 瀏覽:765