我正在开发一个使用HTTP请求将数据从一个服务器发送到另一个服务器的应用程序。一切都适用于字符串,但我不知道如何发送文件(从一台服务器上传文件到另一台服务器)。
我查看了一些示例,但我还需要能够发送字符串(文件ID)和文件。
请求是从该类的POST方法中的Java类发送的。是这样的:客户端将带有ID的文件的上传请求发送到存储服务器。该存储服务器然后将该文件上载到另一个存储服务器...所以从第一个服务器到另一个服务器的POST请求是从该服务器的POST方法方法发送的。
非常感谢任何正确方向的示例代码或链接。
答案 0 :(得分:0)
找到了tutorial如何使用HttpClient发送多部分数据。看看
答案 1 :(得分:0)
Commons FileUpload
包可以轻松地为您的servlet和Web应用程序添加强大,高性能的文件上载功能。
FileUpload解析符合RFC 1867“HTML格式的基于表单的文件上载”的HTTP请求。也就是说,如果使用POST方法提交HTTP请求,并且内容类型为“multipart / form-data”,则FileUpload可以解析该请求,并以调用者容易使用的方式提供结果,如上所述here
参见this 链接可以帮助你更多。
既然你说 -
“我还需要能够发送字符串(文件ID) 文件“
您必须解析Http请求并检查FileItem
是否为表单字段(字符串/文本 - 您的案例中的文件ID)
并相应地处理它。
以下是多部分内容请求的示例代码 -
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
FileItemFactory factory = new DiskFileItemFactory();
FileItem item=null;
ServletFileUpload servletFileUpload = new ServletFileUpload(factory);
servletFileUpload.setSizeMax(-1);
List items =null;
if (isMultipart) {
try
{
items = servletFileUpload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
item = (FileItem) iter.next();
if (item.isFormField())
{
//get your file Id from element to match with item.getFieldName() and do whatever you want
}
else if ( !item.isFormField() ){
//save your file here
}
希望对你有所帮助。
答案 2 :(得分:0)