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