0

ユーザーのコンピューターからサーバーにファイルをアップロードする必要がある Java アプレットがあります。他のライブラリ (com.apache など) を追加できません。そうするための低レベルの方法はありますか。現在、サーバー上に以下を含むphpファイルがあります。

    //Sets the target path for the upload.
    $target_path = "spelling/";

    $_FILES = $_POST;
    var_dump($_FILES);

    move_uploaded_file($_FILES["tmp_name"], $target_path . $_FILES["name"]);
?>

現在、私の Java プログラムは POST 経由でこの php ファイルにパラメーターを送信しています。次のコードを使用して、これらのパラメーターを POST で送信します。

     try {   
        //Creates a new URL containing the php file that writes files on the ec2.
        url = new URL(WEB_ADDRESS + phpFile);
        //Opens this connection and allows for the connection to output.
        connection = url.openConnection();
        connection.setDoOutput(true);

        //Creates a new streamwriter based on the output stream of the connection.
        OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());

        //Writes the parameters to the php file on the ec2 server.
        wr.write(data);
        wr.flush();

        //Gets the response from the server.
        //Creates a buffered input reader from the input stream of the connection.
        BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String line;

        //Loops through and reads the response. Loops until reaches null line.
        while ((line = rd.readLine()) != null) {
            //Prints to console.
            System.out.println(line);
        }

        //Closes reader and writer.
        wr.close();
        rd.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

これはデータの POST では機能しますが、この方法を使用してファイルを送信しようとすると、何も起こりません (サーバーからの応答もファイルのアップロードもありません)。誰かがヒントを持っていれば、私は感謝します:)

4

1 に答える 1

0

使用していjava.net.URLConnectionますか?

You may want to get some help on this page:

http://www.codejava.net/java-se/networking/upload-files-by-sending-multipart-request-programmatically

Here is the main part:

    boundary = "===" + System.currentTimeMillis() + "===";

    URL url = new URL(requestURL);
    httpConn = (HttpURLConnection) url.openConnection();
    httpConn.setDoOutput(true); // indicates POST method
    httpConn.setDoInput(true);
    httpConn.setRequestProperty("Content-Type",
            "multipart/form-data; boundary=" + boundary);
    outputStream = httpConn.getOutputStream();
    writer = new PrintWriter(new OutputStreamWriter(outputStream, charset),
            true);

But, you will need to have the php script be on the same server where your applet came from.

于 2013-03-24T04:01:41.757 に答える