S3 Nodejs TypeError:无法读取属性path' 未定义
我在Nodejs中实现这个function,将文件(照片,mp3,pdf)上传到amazon web servicess3。 目前正试图上传一个MP3文件,但我不断收到错误:“TypeError:无法读取未定义的属性”path“。 我正在使用Multipart middlemware。
var fs = require('fs'); //S3FS instance var S3FS = require('s3fs') //multiparty middleware (to upload our file)----> S3FS will read it's object and stream it to AWS //nmp install connect-multiparty var multiparty = require('connect-multiparty'), multipartyMiddleware = multiparty(); var express = require('express'); var route = express.Router(); module.exports = route; route.use(multipartyMiddleware); //create new filesystem var s3fsImpl = new S3FS('unasbeatz', { accessKeyId: 'xxxxxxx', secretAccessKey: 'xxxxx' }); //create bucket ----> unasbeatz s3fsImpl.create(); route.post('/', function (req, resp) { //get the file from our request object (from multiparty object, it sets the request object) var file = req.files.file; //create new readstream var stream = fs.createReadStream(file.path); //write to AWS using stream return s3fsImpl.writeFile(file.originalFileName, stream).then(function () { fs.unlink(file, function (err) { if (err) console.error(err); }) //else we write uploaded console.log('uploaded'); }) }) route.get('/', function (req, resp) { resp.json({ SecretData: 'abcde' }) });
var stream:抓取每个上传文件的直接部分。 但是我不知道为什么会出现错误
错误:
TypeError: Cannot read property 'path' of undefined at /Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/app/routes/mp3_route.js:34:42 at Layer.handle [as handle_request] (/Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/layer.js:95:5) at next (/Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/route.js:131:13) at Route.dispatch (/Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/route.js:112:3) at Layer.handle [as handle_request] (/Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/layer.js:95:5) at /Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/index.js:277:22 at Function.process_params (/Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/index.js:330:12) at next (/Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/index.js:271:10) at multipart (/Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/connect-multiparty/index.js:50:53) at Layer.handle [as handle_request] (/Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/index.js:312:13) at /Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/index.js:280:7 at Function.process_params (/Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/index.js:330:12) at next (/Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/index.js:271:10) at Function.handle (/Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/index.js:176:3) at router (/Users/AzeezOlusegunOdumosu/Desktop/unasbeatz/node_modules/express/lib/router/index.js:46:12)
使用busboy接收路线中的文件。
我最终实现的是在AWS中上传我的文件,并将他们的URL保存在MongoDB中,然后在我的Web应用程序中寻找这些URL以在浏览器中显示这些文件
- 从url下载文件并将其上传到AWS S3而不保存 – node.js
- 预定的AWS S3 PUT url无法使用jquery从客户端上传
- nodejs在本地文件系统和Amazon S3文件系统之间切换的最佳方法是什么?
- 如何使用s3-streamlogger节点模块重新logging日志文件中的内容并上传到s3中?
- 只允许服务器发布到AWS S3和不客户端应用程序 – 服务器代码和S3configuration
- Node.js脚本工作一次,然后失败
- Amazon S3提供InvalidDigest:您指定的Content-MD5无效
- 简单的WebApp – 通过HTML / AWS Javascript SDK将file upload到S3
- Q.nvovo不能处理响应