2012-05-23 46 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

相关问题