0

次のコードを見てください

JSP

<%-- 
    Document   : index
    Created on : Nov 27, 2012, 1:11:48 PM
    Author     : Yohan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <div>
  <div>Content for New Div Tag Goes Here</div>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
<p>&nbsp;</p>
  <div>
      <form method="post" action="FileSelector" enctype="multipart/form-data">
      Select File: <input type="file" name="location"/></div>
        <br>
        <input type="submit" value="Submit"/>
</form>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>


</div>
    </body>
</html>

サーブレット

package importWizard;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;

public class FileSelector extends HttpServlet
{
    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException
    {
        doPost(request,response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException
    {
        PrintWriter pw = response.getWriter();

        File location = (File)request.getParameter("location");


        pw.write(location);
    }
}

ご覧のとおり、JSPからサーブレットにファイルを送信できません。ファイルを送信する必要はありませんが、少なくともファイルの完全な場所(ファイル名のみを送信しています)。ファイルまたはファイルの完全な場所をJSPからサーブレットに送信するにはどうすればよいですか?

4

1 に答える 1

2

ファイルを送信する必要はありませんが、少なくともファイルの完全な場所(ファイル名のみを送信しています)。ファイルまたはファイルの完全な場所をJSPからサーブレットに送信するにはどうすればよいですか?

<input type="file">これは、標準のHTML要素を使用しては不可能です。基本的にサーバーがファイルの内容を取得する唯一の方法であるため、ファイルの内容全体とファイル名を送信するだけです。つまり、サーバーはクライアントのローカルディスクファイルシステムに直接アクセスできないため、唯一の情報としてのクライアントの絶対ディスクファイルシステムパスは役に立たなかったでしょう。MSIEブラウザは、セキュリティバグが原因で、ファイル名だけでなく、完全なクライアント側のディスクファイルシステムパスを送信することに注意してください。ただし、これは、動作するはずの方法ではありません。

JFileChooserクライアントの絶対ディスクファイルシステムパスのみが本当に必要な場合は、(署名された)アプレットまたはWebスタートアプリケーションを作成して、それを取得し、最後にWebページに埋め込むのが最善の策です。

参照:

于 2012-11-28T17:29:42.667 に答える