私も少し前に同じ種類の問題に直面していました。いくつかの調査の後、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 コードを指す必要があり、文字列から非常に簡単に構築できます。ファイルは、そのパスを表す文字列から構築することもできます。
適切にテストする時間はありませんでしたが、適切に機能するソリューションに基づいて構築されているため、これが役立つことを願っています.