首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kendo角上传文件到后端作为Node.JS

Kendo角上传文件到后端作为Node.JS
EN

Stack Overflow用户
提问于 2019-07-21 19:11:28
回答 2查看 768关注 0票数 1

我是使用肯多上传控制上传文件到Node.js后端,其中使用GridFS穆特。

代码语言:javascript
运行
复制
<kendo-upload 
  [saveField]="file"
  [withCredentials]="false"
  [saveUrl]="uploadUrl"
  (autoUpload)="false"
  [multiple]="false"
  (select)="selectProfilePic($event)"></kendo-upload>

但是node.js API没有接收到请求。我使用[saveField]="file"传递上传的文件和下面的node.js。

代码语言:javascript
运行
复制
var storage = new GridFsStorage({
    //url: mongoose.connection.client.s.url,
    //options: options,
    db: mongoose.connection,
    file: (req, file) => {
      return new Promise((resolve, reject) => {
        myCrypto.randomBytes(16, (err, buf) => {
          if (err) {
            return reject(err);
          }
          const filename = buf.toString('hex') + path.extname(file.originalname);
          const fileInfo = {
            filename: filename,
            bucketName: 'uploads'
          };
          resolve(fileInfo);
        });
      });
    }
  });



const upload = multer({ storage });
router.post('/upload', upload.single('file'), fileUpload);

module.exports = router;

function fileUpload(req, res) {

 console.log("fileUpload")
  try {
    res.send({ file: req.file })
  }
  catch(err){

    console.log(err);
    res.send(err)
  }
}

日志

2019-07-21T19:34:33.679205+00:00appweb.1: File Controller 2019-07-21T19:34:33.680436+00:00 appweb.1:{} 2019-07-21T19:34:33.983631+00:00 appweb.1: MulterError:意外字段2019-07-21T19:34:33.983647+00:00 appweb.1: at wrappedFileFilter (/app/node_node/multer/index.js:40:19) 2019-07-21T19:34:33.983649+00:00 appweb.1: at Busboy。(/app/node_modules/multer/lib/make-middleware.js:114:7) 2019-07-21T19:34:33.983650+00:00appweb.1: at Busboy.emit (events.js:198:13) 2019-07-21T19:34:33.983670+00:00 appweb.1: at Busboy.emit (/app/node_node/busboy/lib/main.js:38:33) 2019-07-21T19:34:33.983671+00:00 appweb.1: at PartStream。(/app/node_modules/busboy/lib/types/multipart.js:213:13) 2019-07-21T19:34:33.983673+00:00appweb.1: at PartStream.emit (events.js:198:13) 2019-07-21T19:34:33.983674+00:00 appweb.1: at HeaderParser.(/app/node_modules/dicer/lib/Dicer.js:51:16) 2019-07-21T19:34:33.983675+00:00 appweb.1: at HeaderParser.emit (events.js:198:13) 2019-07-21T19:34:33.983677+00:00 appweb.1: at HeaderParser._finish 2019-07-21T19:34:33.983678+00:00 appweb.1: at SBMH。(/app/node_modules/dicer/lib/HeaderParser.js:40:12) 2019-07-21T19:34:33.983679+00:00appweb.1: at SBMH.emit (events.js:198:13) 2019-07-21T19:34:33.983680+00:00 appweb.1: at SBMH._sbmh_feed (/app/node_modules/streamsearch/lib/sbmh.js:159:14) 2019-07-21T19:34:33.983682+00:00(/app/node_modules/streamsearch/lib/sbmh.js:56:14) 2019-07-21T19:34:33.983683+00:00 appweb.1: at HeaderParser.push (/app/node_modules/dicer/lib/HeaderParser.js:46:19) 2019-07-21T19:34:33.983685+00:00 appweb.1: at Dicer._oninfo (/app/node_node/dicer/lib/Dicer.js:197:25)2019-07-21T19:34:33.983686+00 appweb.1: at SBMH。(/app/node_modules/dicer/lib/Dicer.js:127:10) 2019-07-21T19:34:33.989908+00:00 herokurouter: at=info method=POST path=“/v1/file/上传”host=herokuapp.com fwd="80.233.46.84“dyno=web.1 connect=0ms service=312ms status=500 bytes=286 protocol=https”

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-21 20:46:06

是否有可能必须将字段名设置为某个file变量?因此,我相信您希望[saveField]="file"将字段名设置为'file'字符串,但是它会搜索一些this.file变量,即undefined,因此将字段名设置为默认的'files'值?

票数 2
EN

Stack Overflow用户

发布于 2019-07-21 20:00:00

遵循@GProst的建议,并进行了一些分析,下面的修正起作用了,我还不知道解决方案。

根据Kendo UI角度文档

设置FormData键,其中包含提交给saveUrl的文件。默认值是files

因此,我只是将参数名从file更改为files,它起作用了。

代码语言:javascript
运行
复制
const upload = multer({ storage });
router.post('/upload', upload.single('files'), fileUpload);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57136218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档