zoukankan      html  css  js  c++  java
  • httpclient upload file

    用httpclient upload上传文件时,代码如下:

            HttpPost httpPost = new HttpPost(uploadImg);
            httpPost.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
            httpPost.addHeader("Accept-Encoding", "gzip, deflate");
            httpPost.addHeader("Accept-Language", "zh-CN,zh;q=0.8,en;q=0.6");
            httpPost.addHeader("Cache-Control", "max-age=0");
            httpPost.addHeader("Connection", "keep-alive");
            httpPost.addHeader("Content-Type", "multipart/form-data;");
    
            File file = new File("/Users/xxx/Desktop/新建文件夹/1.jpg");
    
            byte[] fileBytes = readInputStream(new FileInputStream(file));
            byte[] imgBytes = Base64.encodeBase64(fileBytes);
            String img = new String(imgBytes);
            img = img.replace("
    ", "");
    
            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
    
            builder.addBinaryBody("file", file, ContentType.create("image/jpeg"), file.getName());
            HttpEntity entity = builder.build();
            httpPost.setEntity(entity);
    
            HttpResponse httpResponse = HttpClientBuilder.create().build().execute(httpPost);
            String responseStr = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
            System.err.println(responseStr);
    

    一直提示如下异常:

    </pre></p><p><b>root cause</b> <pre>org.apache.commons.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
    	org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:990)
    	org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:310)
    	org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:334)
    	org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115)
    	org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:156)
    	org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:139)
    	org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1047)
    	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:892)
    	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
    	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
    	org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	com.shangou.trace.http.BraveServletFilterUtil.doFilter(BraveServletFilterUtil.java:54)
    	com.shandiangou.member.session.SdgSessionFilter.doFilter(SdgSessionFilter.java:130)
    </pre></p><p><b>note</b> <u>The full stack trace of the root cause is available in the xqs logs.</u></p><HR size="1" noshade="noshade"><h3>xqs</h3></body></html>
    

      

    原因在于设定了contentType的值。当为boundary设定了contentType后,server不知道boundary如何处理。

    因此,删掉contentType的设定即可。

      

  • 相关阅读:
    web自动化中的上传操作
    HTTP协议
    创建一个get测试
    下载安装
    unittest 介绍
    selenium常用操作
    video视频操作
    调用JavaScript
    下拉框操作
    弹窗操作
  • 原文地址:https://www.cnblogs.com/asfeixue/p/7422332.html
Copyright © 2011-2022 走看看