Đường dẫn File trong JSP

nghiencuuJava

Member
18/3/10
216
0
16
Ðề: Đường dẫn File trong java

Mình có tìm được đoạn code upload file & save file from client to server như sau:
PHP:
try {
            String contentType = request.getContentType();

            if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {
                DataInputStream in = new DataInputStream(request.getInputStream());
                int formDataLength = request.getContentLength();

                byte dataBytes[] = new byte[formDataLength];
                int byteRead = 0;
                int totalBytesRead = 0;
                while (totalBytesRead < formDataLength) {
                    byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
                    totalBytesRead += byteRead;
                }

                String file = new String(dataBytes);
                String saveFile = file.substring(file.indexOf("filename=\"") + 10);

                saveFile = saveFile.substring(0, saveFile.indexOf("\n"));

                saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1, saveFile.indexOf("\""));

                int lastIndex = contentType.lastIndexOf("=");
                String boundary = contentType.substring(lastIndex + 1, contentType.length());

                int pos;
                pos = file.indexOf("filename=\"");

                pos = file.indexOf("\n", pos) + 1;

                pos = file.indexOf("\n", pos) + 1;

                pos = file.indexOf("\n", pos) + 1;


                int boundaryLocation = file.indexOf(boundary, pos) - 4;
                int startPos = ((file.substring(0, pos)).getBytes()).length;
                int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
                saveFile = "D:\\DuAnSem4\\EprojectEasyTickets\\EprojectEasyTickets-war\\web\\images\\" + saveFile;
                FileOutputStream fileOut = new FileOutputStream(saveFile);

                fileOut.write(dataBytes, startPos, (endPos - startPos));
                fileOut.flush();
                fileOut.close();

                out.println("File saved as " + saveFile);
            }
        } finally {
            out.close();
        }
Mình đang tìm cách chuyển đổi dòng này saveFile = "D:\\DuAnSem4\\EprojectEasyTickets\\EprojectEasyTickets-war\\web\\images\\" + saveFile;
từ path tuyệt đối thành path tương đối
Tôi có thay đổi theo mấy cách như sau:
1/ saveFile="..\\..\\..\\images\\" +saveFile;
2/ saveFile="..\\..\\images\\"+saveFile;
3/ saveFile="..\\images\\"+saveFile;
4/ saveFile="\\images\\"+saveFile;
5/ saveFile="images\\"+saveFile;
nhưng loay hoay mãi vẫn chưa được, bạn nào có kinh nghiệm xin giúp đỡ. Chân thành cám ơn!
 

kuzun9x

New Member
Bạn thắc mắc thì đọc lại các trao đổi rồi nêu cái chưa hiểu của bạn đi.
Ý mình là mình cũng đang có câu hỏi tương tự như bạn @nghiencuujava. Mình đã tìm câu trả lời 3 ngày hôm nay rồi nhưng không được.
Các trao đổi ở trên mình đã đọc qua nhưng k giải quyết được vấn đền của mình. Mình đang làm với servlet, nếu dùng directory.getAbsolutePath() thì nó sẽ dẫn đến thư mục gốc của Tomcat, nếu dùng getServletContext().getRealPath() thì nó dẫn đến thư mục build/web ở trong project. Hiện mình muốn lấy đường dẫn đến \src\ ở trong project :(
 
  • Like
Reactions: gorkiit

mrwillo

New Member
Hi Liem,

You can try this: String server_path =
Sessions.getCurrent().getWebApp().getServletContext().getRealPath("/"));
; //It return the current path of your war file, physical path.

But usually, we should do the configuration for path of upload file. It is the real practice. We will not want to store files in War extracted folder but the separate folder in web server.
 
Sửa lần cuối:

mrwillo

New Member
Hi Liem,

I just make your a simple of above with Request object:

Code:
package simple.upload;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class FileUpload
*/
@WebServlet("/FileUpload")
public class FileUpload extends HttpServlet {
    private static final long serialVersionUID = 1L;
      
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FileUpload() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("do get run");
        response.getWriter().write("HELLO");
       
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write(request.getServletContext().getRealPath("")); //it return your real path to your application.
    }
}