本问题已经有最佳答案,请猛点这里访问。
我需要上传图像和TXT文件从我的应用程序到一个远程服务器(只是HTTP无FTP)使用Java。我的应用程序在JSF框架中。我搜索过,但没有找到合适的东西。有人能指导我吗?实际上,我应该将文件上传到远程服务器的特殊文件夹。我有两个共享路径的应用程序来上传文件,所以为了访问这些文件,我决定将共享文件(如图像和文本)上传到第三个服务器。第一个应用程序应该将文件上载到此远程服务器,第二个应用程序应该从中读取文件。所以这个解决方案的难点是使用HTTP将文件上传到第三个服务器(实际上是远程服务器)。
所有建议共享文件上传以发送文件的人都是错误的。它的目的是解析另一侧的多部分/表单数据请求,而不是在您一侧创建和发送多部分/表单数据请求。
也许应该更清楚地回答这个问题。不要期望这个模糊的问题能得到准确的答案!
我有两个共享路径的应用程序来上传文件,所以为了访问这些文件,我决定将共享文件(如图像和文本)上传到第三个服务器。第一个应用程序应该将文件上载到此远程服务器,第二个应用程序应该从中读取文件。所以这个解决方案的难点是使用HTTP将文件上传到第三个服务器(实际上是远程服务器)。
首先考虑以下内容:1.HTTP服务器是否在"第三台服务器"上运行?2。你能在那里上传自定义代码吗?如果第一个问题的答案是"是",那么下面提供的答案将起作用。否则,首先您必须在这里安装Tomcat、Glassfish或其他HTTP服务器,然后按照您的方式工作。
要将文件上载到特定文件夹,您的服务器API必须支持这一点。
服务器端接收上传的文件,可以使用http://commons.apache.org/fileupload/
客户端发送文件上传请求,可以使用https://hc.apache.org/httpcomponents-client-ga/index.html
远程服务器上的特定文件夹。我的应用程序在我的服务器上运行,文件主机不在我的应用程序运行的位置。
如我所说,当您通过HTTP上传时,远程服务器/文件主机必须提供用于指定远程目标的API。
看看ApacheCommons文件上传。您可以在这里找到示例代码。
使用以下代码:
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);
我应该在哪里添加远程服务器URL?在您的代码中,"a.txt"是什么?你能给我解释更多吗?
在您的服务器URL中添加您的服务器URL…a.txt是一个文件,我发送了2个服务器
我使用了你的代码,但是没有移动,也没有异常抛出。你能指导我吗?我没有改变你上面的代码。谢谢
您可以使用httpclient。
以post作为方法发送文件。
根据您的要求,您需要发送多个图像和文本文件,因此HTTP多部分文件上载似乎是一个合适的解决方案。您可以从这里获得更多有关此问题的信息:http://commons.apache.org/fileupload/using.html
制作
@Autowired
ServletContext c;
或取对象2
请你修改一下你的答案好吗?目前,代码很难阅读,而且还不清楚这是如何解决问题的。请更好地解释你的答案。