JSP檔案上傳範例學習筆記

來源:互聯網
上載者:User

JSP上傳檔案到伺服器的範例

1.需要一個html檔案

upload.html(內容如下)

 代碼如下 複製代碼

<html>
    <head>
        <title>Upload</title>
    </head>
    <body>
        <form action="HandleUpload" method="post" enctype="multipart/form-data">
            <input id="file" name="file" type="file">
            <input type="submit">
        </form>
    </body>
</html>

 

2.建立一個servlet來處理前台傳過來的檔案,這個檔案放在org.Rudiment.lab下面名稱為 upload

 代碼如下 複製代碼


package org.Rudiment.lab;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

/*配置Servlet,這個是servlet 3.0 新增加的特性,其它的,可以去api查詢 javax.servlet.annotation */
@WebServlet(name="upload", urlPatterns={"/Handleupload"})
/*這個是配置這個servlet用於處理位元據,與前台的 enctype="multipart/form-data" 對應*/
@MultipartConfig
public class upload extends HttpServlet
{
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException
    {
        /*設定響應產生的內容編碼*/
        response.setContentType("text/html;charset=GBK");
        /*擷取輸出資料流*/       
        PrintWriter out = response.getWriter();               
        try {
            /*這個是上傳的核心類*/
            Part part = request.getPart("file");           

        /*通過part可以擷取到上傳的檔案的類型*/
        out.println("上傳的類型:" + part.getContentType() + "<br />");
        /*擷取上傳檔案大小*/
        out.println("上傳的檔案大小:" + part.getSize() + "<br />");   
        /*擷取頭資訊*/
        Collection<String> headerNames = part.getHeaderNames();           
       
        /*遍曆列印頭資訊*/
        for(String headerName : headerNames)
        {
            out.println(headerName + "-------->" + part.getHeader(headerName) + "<br />");
        }
       
        /*將上傳檔案上傳到應用/uploadFiles,如果沒有這個目錄要先建立*/
        part.write(getServletContext().getRealPath("/uploadFiles") + "/" + System.currentTimeMillis()/1000);   
       
        } catch (ServletException e) {
            e.printStackTrace();
        }
    }
}

上面這個格式是採用注釋的方式 Annotation 進行配置servlet

如果要用web.xml 需要將

@WebServlet(name="upload", urlPatterns={"/Handleupload"})

@MultipartConfig

去掉,然後在web.xml中配置servlet

以上面這個為例子在web.xml中設定檔內容如下:

 代碼如下 複製代碼

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>   

    <servlet>
        <servlet-name>upload</servlet-name>
        <servlet-class>org.Rudiment.lab.upload</servlet-class>
        <multipart-config>
        </multipart-config>
    </servlet>
   
    <servlet-mapping>
        <servlet-name>upload</servlet-name>
        <url-pattern>/Handleupload</url-pattern>
    </servlet-mapping>
   
  <welcome-file-list>
    <welcome-file>upload.html</welcome-file>
  </welcome-file-list>
</web-app>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.