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

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

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

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

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

看看apache commons-fileupload 。 你可以在这里找到示例代码。

使用以下代码:

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); 

你可以使用httpclient。

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

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

使

 @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();