FileUpload的使用案例

來源:互聯網
上載者:User

檔案上傳1、www.apache.org下載commons fileupload 和 commons io2、建立jsp並附上如下代碼<%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%><%String strId = request.getParameter("id");int id = 0;if(strId == null && strId.trim().equals("")){out.println("你選擇的商品有錯!");return;}id = Integer.parseInt(strId);%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>index.html</title>    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="this is my page">    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->  </head>  <body>   <form action="../FileUpload" method="post" enctype="multipart/form-data" name="form1">   <input type="hidden" name="id" value="<%=id %>">  <input type="file" name="file">  <input type="submit" name="Submit" value="upload"></form><br><br>    <form name="uploadform" method="POST" action="./servlet/FileUpload" ENCTYPE="multipart/form-data">        <table border="1" width="450" cellpadding="4" cellspacing="2" bordercolor="#9BD7FF">        <tr><td width="100%" colspan="2">                        檔案1:<input name="x" size="40" type="file">        </td></tr>        <tr><td width="100%" colspan="2">                        檔案2:<input name="y" size="40" type="file">        </td></tr>        <tr><td width="100%" colspan="2">                        檔案3:<input name="z" size="40" type="file">        </td></tr>        </table>        <br/><br/>        <table>        <tr><td align="center"><input name="upload" type="submit" value="開始上傳"/></td></tr>       </table></form>  </body></html>3、直接在項目下建立servlet並附上如下代碼package com.cuijun.shopping.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.*;import java.util.*;import java.util.regex.*;import java.io.*;import org.apache.commons.fileupload.servlet.*;import org.apache.commons.fileupload.disk.DiskFileItemFactory;public class FileUpload extends HttpServlet {String uploadPath = "";    @Overridepublic void init(ServletConfig config) throws ServletException {    uploadPath = config.getInitParameter("uploadPath");}int id = -1;public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}public void doPost(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {res.setContentType("text/html; charset=GB18030");PrintWriter out = res.getWriter();System.out.println(req.getContentLength());System.out.println(req.getContentType());DiskFileItemFactory factory = new DiskFileItemFactory();// maximum size that will be stored in memoryfactory.setSizeThreshold(4096);// the location for saving data that is larger than getSizeThreshold()factory.setRepository(new File("d:\\temp\\"));ServletFileUpload upload = new ServletFileUpload(factory);// maximum size before a FileUploadException will be thrownupload.setSizeMax(1000000);try {List fileItems = upload.parseRequest(req);// assume we know there are two files. The first file is a small// text file, the second is unknown and is written to a file on// the serverIterator iter = fileItems.iterator();// 正則匹配,過濾路徑取檔案名稱String regExp = ".+\\\\(.+)$";// 過濾掉的檔案類型String[] errorType = { ".exe", ".com", ".cgi", ".asp" };Pattern p = Pattern.compile(regExp);while (iter.hasNext()) {FileItem item = (FileItem) iter.next();// 忽略其他不是檔案域的所有表單資訊if (item.isFormField()){if(item.getFieldName().equals("id")){id = Integer.parseInt(item.getString());}}if (!item.isFormField()) {String name = item.getName();long size = item.getSize();if ((name == null || name.equals("")) && size == 0)continue;Matcher m = p.matcher(name);boolean result = m.find();if (result) {for (int temp = 0; temp < errorType.length; temp++) {if (m.group(1).endsWith(errorType[temp])) {throw new IOException(name + ": wrong type");}}try {// 儲存上傳的檔案到指定的目錄// 在下文中上傳檔案至資料庫時,將對這裡改寫//item.write(new File("d:\\" + m.group(1)));item.write(new File(uploadPath + id + ".jpg"));out.print(name + "  " + size + "<br>");} catch (Exception e) {out.println(e);}} else {throw new IOException("fail to upload");}}}} catch (IOException e) {out.println(e);} catch (FileUploadException e) {out.println(e);}// 儲存上傳的檔案到指定的目錄// 在下文中上傳檔案至資料庫時,將對這裡改寫}}4、注意代碼中的路徑問題。千萬小心。1、路徑中\\代表\。不要寫成//。2、路徑後面不要忘記添加\\。5、接受id。1、先定義int id = -1;2、判斷公認的網域是正常域if (item.isFormField()){if(item.getFieldName().equals("id")){id = Integer.parse(item.getString());}}3、把上傳的檔案寫到記憶體item.write(new File(uploadPath + id + ".jpg"));6、修改WEB-INF下的設定檔1、添加<init-param><param-name>uploadPath</param-name><param-value>D:\\web\\Shopping\\WebContent\\image\\product\\</param-value></init-param>2、在servlet中重寫init方法String uploadPath = "";    @Overridepublic void init(ServletConfig config) throws ServletException {    uploadPath = config.getInitParameter("uploadPath");}7、Over!


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.