okhttp结合expressJS的文件上传实例

一、express部分(服务器端)

  1. 项目的初始化及安装
mkdir app
cd app
npm install -S express
npm install -S multer
  1. 代码:
// app.js

const express=require('express')
const http=require('http')
const multer=require('multer')
let upload = multer({ dest: 'uploads/' })
let app=express();

app.post('/upload', upload.single('avatar'), function (req, res, next) {
    let msg={
        body:req.body,
        file:req.file
    }
    res.json(msg)
})

let server=http.createServer(app);
server.listen(8000,function () {
    console.log("start at port 8000")
})
  1. 项目运行
node app.js

okhttp部分(java或者android的客户端)

  1. 引包
implementation 'com.squareup.okhttp3:okhttp:4.2.1'
  1. 上传部分
    @Test
    public void test5() throws Exception{
        String path="/Users/johnyu/Documents/abc.JPG";
        OkHttpClient client=new OkHttpClient();

        //上传文件域的请求体部分
        RequestBody formBody=  RequestBody
                .create(new File(path),MediaType.parse("image/jpeg"));

        //整个上传的请求体部分(普通表单+文件上传域)
        RequestBody requestBody=new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("title", "Square Logo")
                //filename:avatar,originname:abc.jpg
                .addFormDataPart("avatar", "abc.jpg",formBody)
                .build();

        Request request = new Request.Builder()
                .url("http://localhost:8000/upload")
                .post(requestBody)
                .build();
        Response response = client.newCall(request).execute();

        System.out.println(response.body().string());
    }

三、运行结果

{
  "body": {
    "title": "Square Logo"
  },
  "file": {
    "fieldname": "avatar",
    "originalname": "abc.jpg",
    "encoding": "7bit",
    "mimetype": "image/jpeg",
    "destination": "uploads/",
    "filename": "bbeb89990ed970686eeeb467bb02a211",
    "path": "uploads/bbeb89990ed970686eeeb467bb02a211",
    "size": 2884436
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容