나는 또한 짧은 시간 전에 같은 종류의 문제에 직면 해 왔습니다. 일부 연구 끝에 아파치의 HttpComponents 라이브러리 (http://hc.apache.org/)에 아주 간단한 방법으로 HTTP-POST 요청을 작성하는 데 필요한 모든 것이 포함되어 있다는 것을 알게되었습니다. 여기
가 특정 URL에 파일로 POST 요청을 전송하는 방법이다 : 업로드를 완료하려면
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 코드를 가지고 있어야합니다 그것은이다 : Java 메소드에 주어진
<?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
}
}
?>
의 URL 객체는 http://mysite.com/upload.php처럼, PHP 코드를 지정해야하고, 문자열에서 매우 간단하게 구축 할 수 있습니다. 파일은 경로를 나타내는 String으로 만들 수도 있습니다.
제대로 테스트하는 데 시간이 걸리지는 않았지만 제대로 작동하는 솔루션을 바탕으로 작성되었으므로 도움이되기를 바랍니다.
정말 고마워요. 정말 이걸 좀 더 자세히 들여다보고 좀 더 시험해 볼 수있게 도와 줬어요! 난 그냥 하나의 질문에 줄 fileB 무엇입니까 request.addPart ("file", fileB); ? –
오, 죄송합니다. 내 코드에서 잘못된 행을 제거했습니다. 실제로 사용하고있는 원래 코드에서 POST 요청에 다른 필드가 있습니다 : "이름", 내 DB에 다른 이름을 입력하려고했기 때문에 실제 파일 이름). 나는 StringBody를 제거하고 FileBody를 유지하기로되어 있었지만 그 반대의 경우, 편집 할 것입니다. –
ahhhhh 내가 지금 훨씬 더 의미가 예를 참조하십시오 :) –