1

こんにちは、java と php を使用して png 画像を私の Web サーバーに転送しようとして問題が発生しました。

フォームの urlencoded データを使用するように指示され、次に POST 要求を使用して、このトピックで完全に失われました。ファイルと画像のホスティング サイトは、ユーザーのコンピューターからサーバーにファイルと画像を転送するために同じ方法を使用しているようです。 .

JavaとPHPで何をしようとしているのかを正確に把握できるように、何が起こっているのかの説明が役立つかもしれません

どんな助けでも大歓迎です!

4

1 に答える 1

1

私も少し前に同じ種類の問題に直面していました。いくつかの調査の後、Apache の HttpComponents ライブラリ ( http://hc.apache.org/ ) には、HTTP-POST リクエストを非常に簡単な方法で構築するために必要なほとんどすべてが含まれていることがわかりました。

ファイルを含む POST リクエストを特定の URL に送信するメソッドを次に示します。

public static void upload(URL url, File file) throws IOException, URISyntaxException {
    HttpClient client = new DefaultHttpClient(); //The client object which will do the upload
    HttpPost httpPost = new HttpPost(url.toURI()); //The POST request to send

    FileBody fileB = new FileBody(file);

    MultipartEntity request = new MultipartEntity(); //The HTTP entity which will holds the different body parts, here the file
    request.addPart("file", fileB);

    httpPost.setEntity(request);
    HttpResponse response = client.execute(httpPost); //Once the upload is complete (successful or not), the client will return a response given by the server

    if(response.getStatusLine().getStatusCode()==200) { //If the code contained in this response equals 200, then the upload is successful (and ready to be processed by the php code)
        System.out.println("Upload successful !");
    }
}

アップロードを完了するには、その POST リクエストを処理する php コードが必要です。

<?php
$directory = 'Set here the directory you want the file to be uploaded to';
$filename = basename($_FILES['file']['name']);
if(strrchr($_FILES['file']['name'], '.')=='.png') {//Check if the actual file extension is PNG, otherwise this could lead to a big security breach
    if(move_uploaded_file($_FILES['file']['tmp_name'], $directory. $filename)) { //The file is transfered from its temp directory to the directory we want, and the function returns TRUE if successfull
        //Do what you want, SQL insert, logs, etc
    }
}
?>

Java メソッドに指定された URL オブジェクトは、 http://mysite.com/upload.phpのような php コードを指す必要があり、文字列から非常に簡単に構築できます。ファイルは、そのパスを表す文字列から構築することもできます。

適切にテストする時間はありませんでしたが、適切に機能するソリューションに基づいて構築されているため、これが役立つことを願っています.

于 2013-07-24T19:02:44.097 に答える