2014-02-12 158 views
-2

我試圖使用apache HttpClient api將「myfile.txt」文件上傳到apache服務器(WAMP)中作爲「uploaded.txt」,但是我得到了「 404未找到「狀態。從java客戶端上傳文件到apache http服務器

 
public class Httpupload1 { 


    public static void main(String[] args) throws Exception 
    { 

     String url = "http://username:[email protected]/uploaded.txt"; 

     DefaultHttpClient httpclient = new DefaultHttpClient(); 

     HttpPost httppost = new HttpPost(url); 
     MultipartEntity entity = new MultipartEntity(); 

     ContentBody body = new FileBody(
       new File("C:/Users/username/Desktop/myfile.txt"), 
       ContentType.APPLICATION_OCTET_STREAM 
       ); 

     entity.addPart("file", body); 
     httppost.setEntity(entity); 

     HttpResponse response = httpclient.execute(httppost); 
     System.out.println(response.getStatusLine()); 


    } 
} 
+0

我覺得不大可能,你顯示的URL與任何會接受和處理文件上傳。 –

+0

@BrianRoach可以告訴我如何發送請求?它沒有工作,即使沒有用戶名:密碼。 – Roronoa

+0

正如@BrianRoach所說,我認爲在服務器端(PHP代碼,...)接受上傳注意。你只有客戶端在這裏。 WAMP不是這樣開箱的。 –

回答

0

無論是DefaultHttpClient還是AndroidHttpClient摘要的URL,如用戶名:密碼@ ... 相反,你需要使用B64的編碼,以傳遞您的憑據Apache服務器。

要做到這一點試試這個

 public String getB64Auth (String login, String pass) { 
     String source=login+":"+pass; 
     String auth="Basic "+android.util.Base64.encodeToString(source.getBytes(),android.util.Base64.URL_SAFE|Base64.NO_WRAP); 
     return auth; 
    } 

得到的字符串,則必須添加到您的HttpPost對象

String auth = getB64Auth("username","password"); 
HttpPost postRequest = new HttpPost(URL); 
postRequest.addHeader("Authorization",auth); 

而且你需要的東西(如PHP腳本)接受上的數據服務器端。我懷疑「uploaded.txt」是否... 此腳本還負責處理,命名和保存接收到的文件。例如,您可以使用添加到MultiPartEntity的StringBody來傳遞名稱以用於在服務器端保存文件。

http://www.w3schools.com/PHP/php_file_upload.asp以獲取更多信息

+0

我沒有php腳本。我只需要從客戶端複製一些文件到服務器。 – Roronoa

+0

你將需要一個。查看我編輯的答案以獲取鏈接 – dethix

相關問題