溫馨提示×

Ubuntu上JSP如何實現文件上傳下載

小樊
34
2025-08-13 09:02:20
欄目: 編程語言

在Ubuntu上使用JSP實現文件上傳和下載,你需要遵循以下步驟:

  1. 安裝必要的軟件和庫

確保你已經安裝了Java、Tomcat、JSP和Servlet。如果沒有,請按照以下命令安裝:

sudo apt update
sudo apt install openjdk-11-jdk
sudo apt install tomcat9
sudo apt install tomcat9-admin
  1. 創建一個Web應用程序

/var/lib/tomcat9/webapps目錄下創建一個新的文件夾,例如fileUploadDownload。在此文件夾中,創建一個名為WEB-INF的文件夾。在WEB-INF文件夾中,創建一個名為web.xml的文件,用于配置Servlet。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>FileUploadServlet</servlet-name>
        <servlet-class>com.example.FileUploadServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FileUploadServlet</servlet-name>
        <url-pattern>/upload</url-pattern>
    </servlet-mapping>
</web-app>
  1. 創建文件上傳和下載的JSP頁面

fileUploadDownload文件夾中創建一個名為index.jsp的文件,用于顯示文件上傳表單:

<!DOCTYPE html>
<html>
<head>
    <title>File Upload and Download</title>
</head>
<body>
    <h1>Upload File</h1>
    <form action="upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file" required>
        <input type="submit" value="Upload">
    </form>
</body>
</html>
  1. 實現文件上傳和下載的Servlet

fileUploadDownload文件夾中創建一個名為FileUploadServlet.java的文件,用于處理文件上傳和下載請求:

package com.example;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.*;
import org.apache.commons.fileupload.servlet.*;
import org.apache.commons.io.output.*;

@WebServlet(name = "FileUploadServlet", urlPatterns = {"/upload"})
public class FileUploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static final String UPLOAD_DIRECTORY = "uploads";

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        if (ServletFileUpload.isMultipartContent(request)) {
            try {
                List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
                for (FileItem item : multiparts) {
                    if (!item.isFormField()) {
                        String name = new File(item.getName()).getName();
                        item.write(new File(UPLOAD_DIRECTORY + File.separator + name));
                        response.getWriter().println("File uploaded successfully: " + name);
                    }
                }
            } catch (Exception ex) {
                response.getWriter().println("File upload failed: " + ex.getMessage());
            }
        } else {
            response.getWriter().println("Request does not contain upload data");
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String fileName = request.getParameter("fileName");
        if (fileName == null || fileName.isEmpty()) {
            response.getWriter().println("No file name provided");
            return;
        }

        String filePath = UPLOAD_DIRECTORY + File.separator + fileName;
        File file = new File(filePath);
        if (!file.exists()) {
            response.getWriter().println("File not found");
            return;
        }

        response.setContentType("application/octet-stream");
        response.setContentLength((int) file.length());
        response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

        FileInputStream fileInputStream = new FileInputStream(file);
        OutputStream responseOutputStream = response.getOutputStream();
        byte[] buffer = new byte[4096];
        int bytesRead;

        while ((bytesRead = fileInputStream.read(buffer)) != -1) {
            responseOutputStream.write(buffer, 0, bytesRead);
        }

        fileInputStream.close();
        responseOutputStream.flush();
    }
}
  1. 部署Web應用程序

fileUploadDownload文件夾復制到/var/lib/tomcat9/webapps目錄下。Tomcat將自動部署應用程序。

  1. 訪問Web應用程序

在瀏覽器中訪問http://your_server_ip:8080/fileUploadDownload/index.jsp,你應該能看到文件上傳表單。上傳文件后,可以通過訪問http://your_server_ip:8080/fileUploadDownload/download?fileName=your_file_name來下載文件。

注意:這個示例使用了Apache Commons FileUpload庫來處理文件上傳。要將其添加到項目中,請下載jar文件并將其放入WEB-INF/lib目錄下。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女