首先说明我是新手,问的问题要是太简单各位也不要笑。 现在前端使用formData上传字段之后我可以拿到files里面的文件信息,要求我把图片转换成二进制保存到mongodb中。但是我看到很多的文档讲解都是保存文件到一个目录下面(其实我也只能想到这中方式才能拿到文件流),但是难道我需要将文件保存到一个目录下面之后再去读取文件流,再转化成二进制存进数据库,这样不是很耗费时间么?能不能直接在文件上传的时候操作文件流呢? 这是获取的前端数据,是关于文件信息的,没有文件内容,我不明白除了将它保存成一个文件再读取之外要怎么操作才能把文件本身转成二进制数据 { “size”: 845941, “path”: “C:\Users\HASEE\AppData\Local\Temp\upload_a18c638b0d0589c214872973fa25525b”, “name”: “Desert.jpg”, “type”: “image/jpeg”, “mtime”: “2017-08-29T05:56:05.781Z” }
普通的做法是文件上传到单独的地方,数据库建立文件信息即可;而且前端上传第三方更加方便,比如 qiniu
@DevinXian 我也知道更多的是建议将文件保存在项目目录下,再把文件路径保存在数据库中,但是现在要求的是直接将文件保存在数据库。查找了很多方法都是利用busboy等这样的工具检测前端传来的文件,再保存。我就是想知道当前端传文件的时候,我能不能直接获取到文件本身,然后直接保存到mongodb里面,如果你有空解答的话非常感谢,或者你有这方面资料的话麻烦给个链接,谢了
利用 busboy 应该就可以拿到上传文件的 stream 对象了,之后把 stream 里面的内容放到 buffer 里面就可以生成二进制数据了吧。 node 怎样把stream 转成buffer对象?
上传上来的应该就是文件流,不过把二进制数据存数据库里真的好奇怪