实作新增资料与上传档案有两种做法
在讲的是第二种方法,想要在 POST User 时,先上传大头照,再把 path 放到使用者资料。
之後会专门写一篇文章,讲「多个动作的同步资料整理」。
遇到这种 API,怎麽做呢?
POST
/user/:id
request body
{
name: 'chris',
avatar: 'http://127.0.0.1/img/user_1.jpg'
}
**response 200 **
(略)
POST
/file
request header
{
'Content-Type': 'multipart/form-data'
}
request body
form-data
{
file: (binary)
}
**response 200 **
{
data: '/file/:file_path'
}
依前几天建立的默契,可以知道
state: {
file: null
},
mutations: {
file(state, payload) {
state.file = payload
}
},
getters: {
file: state => state.file
},
这些一定要做。
另外特别的地方
所以
要 file 可以用 $store.getters.file
就取得
@/store/actions.js
import backendAPI from '@/utility/backendAPI.js'
export default {
async uploadFile({ commit, getters }) {
const file = getters.file;
const res = await backendAPI.formDataPOST(`/file`, { file })
return res.data
}
// ...
}
src/store/user/actions.js
在 createUser 上面加上 uploadFile
import backendAPI from '@/utility/backendAPI.js'
export default {
async createUser({ dispatch, getters }, { name }) {
if (getters.file != null) {
const res = await dispatch('uploadFile');
await backendAPI.POST(`/user`, {
name,
avatar: res.data,
});
} else {
await backendAPI.POST(`/user`, {
name,
});
}
},
// ...
}
在新增时就可以直接
onSubmit() {
this.$store.dispatch('createUser', this.$store.getters.user);
}
直接在选取完档案之後,就将档案先上传。而不是等到要新增人员时才上传。
缺点: 在一次修改的过程中,不断的换掉档案,就会不断的上传,导致服务器上的垃圾档案会更新变多。
<<: Day19 跟着官方文件学习Laravel-Coverage
引言 今天就来讨论 Pwn 吧, 所谓 Binary Exploitation 直翻是二进制程序档...
任何一项产品和工程的完成,除非是企业够大,能够独立用母子公司运作完成,否则以一般规模的中小企业体,产...
我们昨天已经讲解完了最基础 Regression 的简易 Pytorch 实作了,那我们今天要稍微...
前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...
刚体2D(Rigidbody 2D) 当物体运动速度远小於光速可被视为理想刚体,可以忽略型变,也就是...