[英]Why is my array of objects of type File undefined when I put formData in a object with other properties and post it to the server?
我可以使用以下代码将文件上传到服务器:
服务组件.ts
uploadFiles(){
console.log("uploadFiles() in Service");
const formData: FormData = new FormData();
for(let i = 0; i<this.files_to_upload.length; i++){
formData.append('files', this.files_to_upload.item(i));
}
return this.http.post(`${this.basicUrl}/post/file`, formData).subscribe(
res => console.log(res)
)
}
在快递:
app.post('/post/file', (req,res)=>{
console.log("post/file");
console.log(req.body.files)
if(req.files){
console.log(req.files);
let files = req.files.files;
if(files.length > 1){
for(let i=0; i<files.length; i++){
let filename = files[i].name
files[i].mv(__dirname + '/uploads/' + filename, function(err){
if(err){
console.log(err);
} else {
console.log("Uploaded")
}
})
}
}
}
这将完美地工作。
但现在我想在我的服务中扩展 function 以便我可以导航到路径并将这些文件上传到正确的文件夹中。
uploadFiles(path){
console.log("uploadFiles() in Service");
const formData: FormData = new FormData();
for(let i = 0; i<this.files_to_upload.length; i++){
formData.append('files', this.files_to_upload.item(i));
}
return this.http.post(`${this.basicUrl}/post/file`, {files: formData, path: path}).subscribe(
res => console.log(res)
)
}
但是后来不知何故我无法访问这些文件。 如果我在 Express 中执行以下操作:
app.post('/post/file', (req,res)=>{
console.log("post/file");
console.log(req.body)
...
正文有属性files
和path
,但files
是空的 object... 扩展 object 发送到服务器时如何访问文件?
发送文件时,应使用multipart/form-data
方法对正文进行编码。
您正在发送Json
object (尽管它具有多部分属性),因此正文将使用application/json
方法进行编码,这就是您无法访问上传文件的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.