如何使用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();
- 为什么我用Apache Commons FileUpload获得“FileUploadException:Stream意外结束”?
- 如何使用RESTeasy从multipart / form-data请求获取text / xml为UTF-8?
- Struts2 Fileupload在动作类中给出null文件
- 为什么这个exceptionFileItemStream $ ItemSkippedException?
- 没有struts标签的struts 2文件上传
- 使用java中的Restlet multipart / form-data上传文件
- struts2文件上传松动参数
- 在Java环境中检测重复上载文件的最佳方法?
- HTTP PUT以Java格式上传文件