如何使用java将文件上传到http远程服务器?

时间:2012-05-23 11:36:08

标签: java http jsf file-upload remote-server

我需要使用java将应用程序中的图像和txt文件上传到远程服务器(Just http no ftp)。我的应用程序在jsf框架中。我搜索但找不到合适的东西。 任何人都可以指导我吗? 实际上我应该将文件上传到特殊文件夹到远程服务器。 我有两个应用程序使用共享路径上传文件,所以为了访问这些文件,我决定将共享文件(如图像和文本)上传到第三台服务器。第一个应用程序应将文件上载到此远程服务器,第二个应用程序应从中读取它们。 所以这个解决方案的难点在于使用http。

将文件上传到第三台服务器(实际上是远程服务器)

6 个答案:

答案 0 :(得分:6)

要将文件上传到特定文件夹,您的服务器API必须支持该文件。

服务器端用于接收上传的文件,您可以使用http://commons.apache.org/fileupload/

客户端发送文件上传请求,您可以使用https://hc.apache.org/httpcomponents-client-ga/index.html

答案 1 :(得分:3)

看看apache commons-fileupload。您可以找到示例代码here

答案 2 :(得分: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); 

答案 3 :(得分:1)

您可以使用httpclient。

使用POST作为方法发送文件。

答案 4 :(得分:0)

根据您的要求,您需要发送多张图片&文本文件,所以HTTP多部分文件上传似乎是一个合适的解决方案。您可以从这里获得有关此的更多信息: http://commons.apache.org/fileupload/using.html

答案 5 :(得分:-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();