1

我在使用 POST 请求发送文件时遇到问题。如果 fileName 有括号,则服务器根本不会收到文件,否则服务器会收到我插入的名称的文件。

我已经尝试过使用
- volley library
- appach httpmime 不同版本
- Android Asynchronous Http Client
和我遇到相同的结果。

这是我使用的代码

       String fileName = "link[image]";//name of the parameter         
       HttpContext localContext = new BasicHttpContext();
       MultipartEntityBuilder builder = MultipartEntityBuilder.create();
       builder.setLaxMode();
       builder.setCharset(Charset.forName("UTF-8"));
       builder.addBinaryBody(fileName, image, ContentType.APPLICATION_OCTET_STREAM, image.getName());//image - it's a File
       HttpClient client = new DefaultHttpClient();
       HttpPost post = new HttpPost(URL);
       HttpEntity entity = builder.build();
       post.setEntity(entity);
       HttpResponse response = client.execute(post, localContext);
       HttpEntity httpEntity = response.getEntity();
       String result = EntityUtils.toString(httpEntity);
4

1 回答 1

0

试试这个方法

String fileName = "link[image]";
        HttpContext localContext = new BasicHttpContext();
        MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
        entity.addPart("image", new FileBody(new File(fileName)),"image/jpg");
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(URL);
        HttpEntity entity = builder.build();
        post.setEntity(entity);
        HttpResponse response = client.execute(post, localContext);
        HttpEntity httpEntity = response.getEntity();
        String result = EntityUtils.toString(httpEntity);
于 2014-04-17T11:56:11.457 回答