2012-05-23 828 views
7

我需要從我的應用程序上傳圖像和txt文件到遠程服務器(只是http沒有ftp)使用java。我的應用程序是在jsf框架中。我搜查了但沒有找到合適的東西。 任何人都可以指導我嗎? 其實我應該上傳文件到特殊文件夾到遠程服務器。 我有兩個應用程序共享上傳文件的路徑,所以爲了訪問它們到這個文件,我決定上傳共享文件(如圖片和文本)到第三個服務器。第一個應用程序應該上傳文件到這個遠程服務器,第二個應用程序應該從它讀取它 所以我這個解決方案的難點在於使用http將文件上傳到第三臺服務器(實際上是遠程服務器)。如何使用java將文件上傳到http遠程服務器?

+0

大家誰建議的Commons FileUpload,發送的文件是錯誤的** **。它用於*解析*另一方的多部分/表單數據請求,而不是*創建和發送* multipart/form-data請求。 – BalusC

+1

可能應該使問題更清楚。不要指望這個模糊的問題準確的答案! –

+0

我有兩個應用程序共享路徑上傳文件,所以爲了訪問它們到這個文件,我決定上傳共享文件(如圖片和文本)到第三個服務器。第一個應用程序應該上傳文件到這個遠程服務器,第二個應用程序應該從它讀取它所以這個解決方案的難點在於使用http將文件上傳到第三臺服務器(實際上是遠程服務器)。 – zorro6064

回答

1

您可以使用httpclient。

使用POST作爲方法發送文件。

2

使用下面的代碼:

 byte[] data = bos.toByteArray();//convert ur file into byte[] 
     HttpClient httpClient = new DefaultHttpClient();//Client 
     HttpPost postRequest = new HttpPost(YOUR_SERVER_URL);//Post Request to specified URL 
     ByteArrayBody bab = new ByteArrayBody(data, "a.txt"); 
     MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);// Multipart data 
     reqEntity.addPart("uploadingFile", bab); //adding data to request entity 
     postRequest.setEntity(reqEntity);//adding request entity to post request 
     HttpResponse response = httpClient.execute(postRequest); 
+0

我應該在哪裏添加我的遠程服務器url?在你的代碼中,什麼是「a.txt」?你能爲我解釋更多嗎? – zorro6064

+0

在YOUR_SERVER_URL中添加你的服務器url ... a.txt是我發送2個服務器的文件 –

+0

我用你的代碼,但沒有任何移動,也沒有異常拋出。你能指導我嗎?我沒有改變你的上面的代碼。謝謝 – zorro6064

6

要上傳文件到指定文件夾,您的服務器API必須支持這一點。

服務器端接收上傳的文件,你可以使用http://commons.apache.org/fileupload/

客戶端發送一個文件上傳請求時,你可以使用https://hc.apache.org/httpcomponents-client-ga/index.html

+0

遠程服務器上的特定文件夾。我的應用程序在我的服務器上運行,文件主機不在我的應用程序運行位置 – zorro6064

+0

正如我所說的,當您通過HTTP上傳時,遠程服務器/文件主機必須提供用於指定遠程目標的API – gigadot

-3

使

@Autowired 
ServletContext c; 

或採取對象

byte[] bytes = file.getBytes(); 

String UPLOAD_FOLDEdR=c.getRealPath("/images"); 
Path path = Paths.get(UPLOAD_FOLDEdR +"/"+ file.getOriginalFilename()); 
Files.write(path, bytes); 
System.out.println(path); 
String Pic_Name =file.getOriginalFilename(); 
+1

您能否編輯您的答案,這樣纔有意義?目前代碼很難閱讀,而且這個問題如何解決這個問題還不是很清楚。請更好地解釋你的答案。 – melwil

相關問題