一、express部分(服务器端)
- 项目的初始化及安装
mkdir app
cd app
npm install -S express
npm install -S multer
- 代码:
// 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")
})
- 项目运行
node app.js
okhttp部分(java或者android的客户端)
- 引包
implementation 'com.squareup.okhttp3:okhttp:4.2.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
}
}