2013-07-24 8 views
1

안녕하세요, 자바와 PHP를 사용하여 웹 서버에 PNG 이미지를 전송하는 데 어려움을 겪고 있습니다. Ive는 FTP를 사용해 보았지만 포트 스크립팅을위한 Im 스크립팅은 유용하지 않습니다.POST 데이터를 사용하여 java가있는 서버에 png 업로드

양식 urlencoded 데이터를 사용한 다음 POST 요청을 사용하여 완전히이 항목을 잃어 버렸고 파일 및 이미지 호스팅 사이트에서 동일한 방법을 사용하여 사용자 컴퓨터에서 파일과 이미지를 전송했습니다. 서버로 전송합니다.

어쩌면 내가 정확히 많이 주시면 감사하겠습니다 자바와 PHP

어떤 도움을 함께 일을하려고 메신저 무엇인지 파악할 수 있도록 도움이 될 세드릭의 단지 설명!

답변

0

나는 또한 짧은 시간 전에 같은 종류의 문제에 직면 해 왔습니다. 일부 연구 끝에 아파치의 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으로 만들 수도 있습니다.

제대로 테스트하는 데 시간이 걸리지는 않았지만 제대로 작동하는 솔루션을 바탕으로 작성되었으므로 도움이되기를 바랍니다.

+0

정말 고마워요. 정말 이걸 좀 더 자세히 들여다보고 좀 더 시험해 볼 수있게 도와 줬어요! 난 그냥 하나의 질문에 줄 fileB 무엇입니까 request.addPart ("file", fileB); ? –

+0

오, 죄송합니다. 내 코드에서 잘못된 행을 제거했습니다. 실제로 사용하고있는 원래 코드에서 POST 요청에 다른 필드가 있습니다 : "이름", 내 DB에 다른 이름을 입력하려고했기 때문에 실제 파일 이름). 나는 StringBody를 제거하고 FileBody를 유지하기로되어 있었지만 그 반대의 경우, 편집 할 것입니다. –

+0

ahhhhh 내가 지금 훨씬 더 의미가 예를 참조하십시오 :) –