我可以使用axios和FormData API将文件发送到服务器,例如:
在服务器端,头像对象将是空的。我可以发送像头像名称这样的元数据,但无法发送整个对象。
persist(avatar){
let data = new FormData();
data.append('avatar', avatar);
axios.post(`/api/users/${this.user.name}/avatar`, data)
.then(() => flash('Avatar uploaded!'));
}
参数 avatar 传递给 persist() 方法,是一个来自类型为“file”的表单输入的文件对象。
然后我可以在服务器端获取该文件。
是否可以不使用 FormData 完成此操作?也就是模拟 FormData 的工作方式?基本上,我正在尝试理解 FormData API 执行的额外工作。也许使用 axios 并不可行,我应该使用普通的 XMLHttpRequest。
当然,仅仅发送文件对象是行不通的:
axios.post(`/api/users/${this.user.name}/avatar`, {avatar: avatar})
在服务器端,头像对象将是空的。我可以发送像头像名称这样的元数据,但无法发送整个对象。
FormData
实例。然后,你需要使用formData.append()
方法决定将哪些字段放入该对象中。我建议为文件和 JSON 分别设置一个字段,其中 JSON 是文件的元数据。 - Seth Holladay