我的代码遇到了一些奇怪的问题。我正在使用org.apache.http.entity.mime.MultipartEntity
类将文件实体提交到服务器,以便我可以上传文件。但是当我尝试添加另一个实体/参数时,它的值无法通过HttpServletRequest
. 下面是我发送成功文件上传请求的客户端工作代码:
public class TestClass
{
public static void main(String args[]) throws ConfigurationException, ParseException, ClientProtocolException, IOException
{
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost post = new HttpPost("http://localhost:9090/HostImages/ImageUploaderServlet");
MultipartEntity entity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE );
entity.addPart( "file", new FileBody(new File("D:/tempImage/cat_image.jpg") ));
post.setEntity(entity);
String response = EntityUtils.toString( client.execute( post ).getEntity(), "UTF-8" );
client.getConnectionManager().shutdown();
}
}
在服务器端,即里面ImageUploaderServlet
我解析的request
对象HttpServletRequest
如下:
FileItemFactory fileItemFactory = new DiskFileItemFactory();
它给了我通过客户端提交的文件列表,这些文件绝对可以正常工作。
ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
List fileItems = servletFileUpload.parseRequest(request);
当我尝试通过使用MultipartEntity
或HttpParams
无法在服务器端获取其值来添加另一个实体时,就会出现问题。我已经完成了这个已经发布的问题,但没有帮助。(我尝试添加另一个实体,StringBody
如下所示:)
entity.addPart("flag", new StringBody("true"));
我想在客户端添加一些额外的参数,以便我可以在服务器端使用它来达到我的目的。附加参数可以是 String、int 或 byte。我不知道确切的问题出在哪里,客户端还是服务器端!请帮忙。