servlet上傳文件參數
1. 在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);
}
上面就是了。。。。祝你好運哈!
2. jsp+servlet實現文件上傳問題
try{
//1.獲得上傳幫助類SmartUpload SmartUpload su = new SmartUpload();
//2.設置上傳允許大小,以B為單位 su.setMaxFileSize(3*1024*1024);
//3.設置允許上傳圖片格式 su.setAllowedFilesList("jpg,gif,bmp");
//4.初始化
su.initialize(this.getServletConfig(), request, response);
//上傳
su.upload();
//獲取上傳文件的入口,客戶端會認為上傳是一堆文件 Files files = su.getFiles();
//上傳一個,從0開始
File file = files.getFile(0);
//上傳文件的名字
String fileName = file.getFileName();
//上傳文件的後綴名
String fileExt = file.getFileExt();
//上傳文件的大小
int fileSize = file.getSize();
//獲取頁面提交的值,此處的request不再是HttpServletRequest,必須使用SmartUpload提供的request
Request myreq = su.getRequest();
String username = myreq.getParameter("username");
String password = myreq.getParameter("password");
//設置上傳圖片的路徑地址
java.io.File truefile = new java.io.File(this.getServletContext().getRealPath("/image"));
//不存在則創建
if(!truefile.exists()){
truefile.mkdir();
}
//對圖片進行重命名 String trueFileName = new UUIDGenerator().generate().toString()+"."+fileExt;
//最終路徑/image/435454343.jpg
String finalPath = "/"+truefile.getName()+"/"+trueFileName;
file.saveAs(finalPath);
3. servlet 文件上傳 ,急急
你看看下面這個、
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("GBK");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>文件提示</TITLE></HEAD>");
out.println("<BODY>");
// 這里對request進行封裝,RequestContext提供了對request多個訪問方法
RequestContext requestContext = new ServletRequestContext(request);
// 判斷表單是否是Multipart類型的
if (FileUpload.isMultipartContent(requestContext)) {
// 實例化一個硬碟工廠
DiskFileItemFactory factory = new DiskFileItemFactory();
// 設置緩存區的大小
factory.setSizeThreshold(1024 * 1024);
// 設置目標臨時文件夾
String temp=this.getServletContext().getRealPath("/") + "FileTemp";
// 設置目標文件夾路徑
String path = this.getServletContext().getRealPath("/") + "File";
// 設置上傳文件夾路徑
factory.setRepository(new File(temp));
// 上傳組件
ServletFileUpload upload = new ServletFileUpload(factory);
// 設置文件上傳的大小
upload.setFileSizeMax(3 * 1024 * 1024);
List<FileItem> fileList = null;
try {
// 獲取文件列表
fileList = upload.parseRequest(request);
} catch (FileUploadException e) {
if (e instanceof SizeLimitExceededException) {
out.println("文件尺寸超過規定大小:" + 3 * 1024 * 1024 + "位元組<p/>");
out
.println("<a href=\"/Fox/upload.jsp\" target=\"_top\">返回</a>");
return;
}
e.printStackTrace();
} // 得到所有上傳文件
Iterator<FileItem> it = fileList.iterator();
while (it.hasNext()) {
// 得到系統時間
long now = System.currentTimeMillis();
// 將long類型轉換為String類型
String prefix = String.valueOf(now);
FileItem fileItem = (FileItem) it.next();
// 得到文件的後綴
String postfix = fileItem.getName().substring(
fileItem.getName().lastIndexOf(".") + 1); // 保存文件,其實就是把緩存里的數據寫到目標路徑下
File newFile = new File(path + "/" + prefix + "." + postfix);
// 文件列表為空
if (fileItem.getName() == null || fileItem.getName() == "") {
out.println("請選擇上傳文件<p />");
out
.println("<a href=\"/Fox/upload.jsp\" target=\"_top\">返回</a>");
return;
}
try {
if (newFile.createNewFile())
fileItem.write(newFile);
} catch (Exception e) {
e.printStackTrace();
}
out.println("文件上傳成功. 已保存為: " + prefix + "." + postfix
+ " 文件大小:" + fileItem.getSize() + "位元組<p />");
}
}
out.println("<a href=\"/Fox/upload.jsp\" target=\"_top\">繼續上傳</a>");
out.println("</BODY>");
out.println("</HTML>");
out.flush();
out.close();
}}
還有一種方式更簡單、我也給你、用的是jspsmartupload、、、 public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("GBK");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD><TITLE>圖片上傳</TITLE></HEAD>");
out.println("<BODY>");
// 新建一個SmartUpload對象
SmartUpload smart = new SmartUpload();
// 上傳初始化
smart.initialize(servletconfig, request, response);
try {
smart.upload();
} catch (SmartUploadException e) {
e.printStackTrace();
}
com.jspsmart.upload.File myFile = smart .getFiles().getFile(0);
// 得到系統時間
long now = System.currentTimeMillis();
// 將long類型轉換為String類型
String filename = String.valueOf(now);
// 得到文件的後綴
String postfix = myFile .getFileExt(); //取得文件的大小
int file_size=myFile.getSize();
// 將上傳文件全部保存到指定目錄
try {
smart.getFiles().getFile(0).saveAs("/images/" + filename+postfix);
} catch (SmartUploadException e) {
e.printStackTrace();
}
out.println("</BODY>");
out.println("</HTML>");
out.flush();
out.close();
} 寫的有點亂、至於相關包的話、你就自己去找吧、應該能找到的、祝你好運、
4. 通過 java (servlet) 實現兩個web工程間的文件傳輸
這個思路很簡單,如下:
1、訪問A的servlet,我們在這個Servlet裡面取到這個文件,這個很容易是吧
2、在A的servlet將取到的文件(inputstrema格式),以post的形式,模擬表單提交給B的servlet
3、在B的servlet裡面接收,就像接收普通的表單上傳的一樣
下面是一些上傳和接收的核心代碼,使用的httpclient
A裡面的上傳:
HttpClient httpclient = new DefaultHttpClient();
String url = 「這里是B的servlet的訪問的地址,全地址」;
HttpPost httppost = new HttpPost(url);
// 一個本地的文件
InputStreamBody fileis = new InputStreamBody(is, fileName);
// 多部分的實體
MultipartEntity reqEntity = new MultipartEntity();
// 增加
reqEntity.addPart("bin", fileis);
// 設置
httppost.setEntity(reqEntity);
HttpResponse responses = null;
try {
responses = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (Validator.isNotNull(responses)) {
int httpstatus = responses.getStatusLine().getStatusCode();
if(httpstatus!=200){
System.out.println(url+"訪問錯誤,http狀態"+httpstatus);
}
}
B裡面接收文件的核心代碼,使用的fileupload
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = new ArrayList();
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
FileItem file = null;
if (items.size()>0) {
file =(FileItem)items.get(0);
}
5. 怎麼用servlet上傳文件到該WEB項目的WebRoot的某文件夾下啊是相對路徑不是絕對路徑,請問怎麼做啊
這個問題我以前也有過,但後來我明白了,雖然說JSP能編譯為Servlet但是,這只是web容器的功勞。你要是邊幾個項目就會明白。好的WEB程序里。JSP和HTML文件的編寫是一樣的。除了一些必要的處理代碼塊。但是很少有。一般處理請求的都放在了servlet里,現在Struts很好的封裝了Servlet這一層,成為了servelt的專業框架。用來處理用戶的請求。但有必要的時候,我們還必須自己去寫Servlet,比如過濾器,再比如監聽器等。
所以說,雖然JSP能編譯為Servlet但並不代表他就能替代Servlet。一般的web項目盡量將顯示代碼放進jsp中
而處理代碼放進Servlet中。以增加可讀性,可拓展性。可維護性。可能我說的有點深奧,但是你以後去做項目時就會明白了。
JSP是絕不能替代Servlet的。希望對你有幫助。
6. 怎樣用servlet實現文件上傳
編寫上傳頁面,在WebContent目錄下創建一個NewFile.jsp文件,並編寫如下代碼。注意: 必須加上 enctype="multipart/form-data" .表示以二進制的數據格式來傳輸。
開發處理文件上傳的Servlet
1、使用註解@MultipartConfig將一個Servlet標識為支持文件上傳。
2、Servlet3.0將multipart/form-data的POST請求封裝成Part,通過Part對上傳的文件進行操作。
將控制台列印的文件上傳地址復制到地址欄。查看上傳的文件,頁面提示上傳成功!
在編寫servlet時,應該注意 必須註解 @MultipartConfig 將一個Servlet標識為支持文件上傳,否則會導致上傳失敗。還有就是JSP頁面上 form表單中 ,必須加上 enctype="multipart/form-data" .表示以二進制的數據格式來傳輸。
文件上傳servlet類的代碼編寫。dopost()方法中的主要代碼:(讀者可參考注釋自行進行編寫,然後按照以上步驟進行測試)。
request.setCharacterEncoding("utf-8"); //獲取文件部件part Part part=request.getPart("filename"); //獲取伺服器的路徑 即上傳路徑 String root=request.getServletContext().getRealPath("/file"); //獲取上傳文件的頭部信息 String headname=part.getHeader("content-disposition"); //獲取文件後綴名 String ext = headname.substring(headname.lastIndexOf("."), headname.length()-1); // 上傳目的地完整的路徑 String filename=root+"/"+UUID.randomUUID().toString()+ext; System.out.println(filename); //導入文件 part.write(filename); request.setAttribute("info", "上傳成功!"); request.getRequestDispatcher("/NewFile.jsp").forward(request, response); }
7. 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什麼的
8. 怎樣在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>");
}
}
附件為文件上傳的完整代碼,包括驗證上傳的必須是圖片!
9. servlet 上傳文件時,初始化方法裡面參數怎麼寫su.initialize();
初始化方法
用於servlet
第一次初始化用的。
並不是每次都調用。
因此
業務處理可以不用寫在
initialize
裡面。
除非是
你想在
servlet
第一次初始化的時候做一些操作。比如從配置文件
讀取
上傳文件目錄等事情。
初始化方法裡面默認方法是.調用父類中的
servlet初始化
super.initialize();
如果有疑問,請追問。
如果能幫助到你,請採納為答案。