博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记录OkHttp上传文件
阅读量:3749 次
发布时间:2019-05-22

本文共 1933 字,大约阅读时间需要 6 分钟。

理解文件上传我觉得还是需要一些JavaWeb方面的知识,比如什么是表单了,等等

博主先用现学了下,理解也不咋透彻,所以先记录下,有不对的欢迎指正。
先上一下文件上传的代码,代码
客户端Android代码:

okHttpClient = build();        MultipartBody.Builder builder = new MultipartBody.Builder();        builder.setType(MultipartBody.FORM);        //第一个参数要与Servlet中的一致        builder.addFormDataPart("file", files.getName(), RequestBody.create(MediaType.parse("application/octet-stream"), files));        MultipartBody multipartBody = builder.build();        Request request = new Request.Builder().url(url).post(multipartBody).build();        okHttpClient.newCall(request).enqueue(callback);

客户端代码我有两个疑问:

  1. 为什么用MultipartBody,这个MultipartBody是什么
  2. file是什么意思,为什么要跟Servlet中的一致

上面两个问题引出了这篇文章

服务器代码:

System.out.println("doPost==");            request.setCharacterEncoding("utf-8");            //获取file命名的part,注意要与Android端一样            Part part = request.getPart("file");            // 获取请求头,请求头的格式:form-data; name="file"; filename="snmp4j--api.zip"            String header = part.getHeader("content-disposition");            System.out.println(header);            String fileName = getFileName(header);            // 存储路径            String savePath = "/Users/apple/Documents";            // 把文件写到指定路径            part.write(savePath + File.separator + fileName);            response.setCharacterEncoding("UTF-8");            PrintWriter writer = response.getWriter();            writer.print("上传成功");

这个file就相当于表单里面的字段,一般写到jsp里面。

<%@ page language="java" pageEncoding="UTF-8"%>      文件上传        
上传用户:
上传文件1:
上传文件2:

type为file

这里写图片描述
当我们在浏览器或者我们Android客户端,上传文件的时候,要和表单的file对应上,所以,builder.addFormDataPart("file", files.getName(), RequestBody.create(MediaType.parse("application/octet-stream"), files));这句话要把file加上。


MultipartBody

我们提交普通键值对类型表单的时候Content-Type默认为application/x-www-form-urlencoded,在OkHttp中可以使用FormBody.Builder去提交该种类表单。
当我们提交文件的时候Content-Type应该为multipart/form-data

你可能感兴趣的文章
汇编语言-实验10 代码段、堆栈段和数据段
查看>>
第十三周.
查看>>
实验六:PL/SQL编程基础(1)
查看>>
第十四周.
查看>>
实验十三:导出与导入
查看>>
第十五周.
查看>>
基于MVC模式的用户登录
查看>>
第十六周.
查看>>
Java Swing搭建QQ登录界面
查看>>
Spring常用依赖及注解的使用
查看>>
Aop面向切面编程方法
查看>>
javaweb邮箱页面架构
查看>>
Mybatis环境搭建
查看>>
Spring环境搭建与属性注入
查看>>
解决Maven中资源过滤问题
查看>>
Springboot中解决Ajax请求跨域问题
查看>>
C++ Primer Plus 编程练习4
查看>>
C++ Primer Plus 编程练习5
查看>>
mybati SQL动态语句报错:org.apache.ibatis.exceptions.PersistenceException
查看>>
mybatis 分页插件的版本不同 :java.lang.ClassCastException: com.github.pagehelper.PageHelper.....
查看>>