当我上传一些东西到azure blob存储时,我正在尝试发送一些JSON的url
。对象为req.files
。当我console.log
和req.files
时,我得到了类似的东西:
[
{
fieldname: 'chooseFile',
originalname: 'video.mov',
encoding: '7bit',
mimetype: 'video/quicktime',
container: 'asset-afe1b5d0-cf8f-11eb-9615-13b96d691770',
blobPath: '1623950892848-aGxhZC5tb3Y%3D.mov',
url: 'https://cdn.example.com/item/this/that'
}
]
如果我尝试,比如说,console.log
req.files.url
,我会得到一个类似这样的错误:
Property 'url' does not exist on type '{ [fieldname: string]: File[]; } | File[]'.
Property 'url' does not exist on type 'File[]'
所以我试过这个:
const filedata = JSON.stringify(req.files)
console.log(filedata)
它返回的内容更像这样:
[{"fieldname":"chooseFile","originalname":"video.mov","encoding":"7bit","mimetype":"video/quicktime","container":"path","blobPath":"item.mov","url":"https://cdn.example.net/this/path/here/there"}]
现在,如果我尝试console.log
filedata.url
,我会得到这样的错误:
Property 'url' does not exist on type 'string'
req.files
是一个数组,而不是对象。因此,您应该访问req.files[0].url
以访问req.files
中的第一个元素,然后获取其url
属性。
第二个问题是在JSON.stringify
初始化数组之后尝试获取属性url
。JSON.stringify
返回JS对象的字符串表示,并且字符串没有url
属性。
因此,您很可能是指console.log(req.files[0].url)
,假设您知道req.files
中只有一个元素,或者您只需要第一个元素。
尽管所有的注释和答案都声称这是一个数组,但在查看包的源代码后,我看到了JSON.parse
。不,这不是一个数组。我做的每件事都很好。这是一个无关的Typescript错误。我通过将req
的类型从express.Request
更改为any
来修复它。那么req.files.url
就可以正常工作了。