簡體   English   中英

SailsJS action2 多文件上傳

[英]SailsJS action2 multiple file upload

我正在嘗試從sailsjs 1.2.4 上傳多個文件

這是我的行動:

module.exports = {


  friendlyName: 'Post',


  description: 'Post something.',

  files: ['mediaFiles'],

  inputs: {
    text : {
      required: true,
      type: 'string',
    },
    
    mediaFiles : {
      description : "Media files",
      example: '===',
      required : false
    }
  },


  exits: {

  },


  fn: async function (inputs) {
       inputs.mediaFiles._files.forEach(file=>{
            console.log(file)
       })
  })
}
}

我在文件 object 中得到以下結果:

{ stream:
   PassThrough {
     _readableState:
      ReadableState {
        objectMode: false,
        highWaterMark: 16384,
        buffer: BufferList { head: [Object], tail: [Object], length: 2 },
        length: 43093,
        pipes: null,
        pipesCount: 0,
        flowing: null,
        ended: true,
        endEmitted: false,
        reading: false,
        sync: false,
        needReadable: false,
        emittedReadable: true,
        readableListening: false,
        resumeScheduled: false,
        emitClose: true,
        destroyed: false,
        defaultEncoding: 'utf8',
        awaitDrain: 0,
        readingMore: false,
        decoder: null,
        encoding: null },
     readable: true,
     domain: null,
     _events:
      { prefinish: [Function: prefinish],
        drain: [Function],
        end: [Function],
        error: [Array] },
     _eventsCount: 4,
     _maxListeners: undefined,
     _writableState:
      WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: true,
        ended: true,
        finished: true,
        destroyed: false,
        decodeStrings: true,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: null,
        writelen: 0,
        bufferedRequest: null,
        lastBufferedRequest: null,
        pendingcb: 0,
        prefinished: true,
        errorEmitted: false,
        emitClose: true,
        bufferedRequestCount: 0,
        corkedRequestsFree: [Object] },
     writable: false,
     allowHalfOpen: true,
     _transformState:
      { afterTransform: [Function: bound afterTransform],
        needTransform: false,
        transforming: false,
        writecb: null,
        writechunk: null,
        writeencoding: 'buffer' },
     headers:
      { 'content-disposition':
         'form-data; name="mediaFiles"; filename="bwDzrPkA_400x400.jpg"',
        'content-type': 'image/jpeg' },
     name: 'mediaFiles',
     filename: 'bwDzrPkA_400x400.jpg',
     byteOffset: 378,
     byteCount: 43093,
     field: 'mediaFiles' },
  status: 'bufferingOrWriting' }

我的問題是如何將此文件 stream 寫入 /public/media/xyz.png 之類的路徑。 我曾經使用帆正常文件上傳,我可以使用 this.req.file("name").upload().. 但不是在行動 2。我檢查了其他答案,但他們上傳到 s3 而不是在同一台服務器上寫入。

您可以使用依賴 Sails sails-hook-uploads ,因為您可以在設置中定義dirpath

https://github.com/sailshq/sails-hook-uploads/blob/master/index.js#L31

module.exports.upload = {
  dirpath: '.tmp/public', // recommended .tmp/uploads
  adapter: require('skipper-disk'), // Default
}

我強烈建議不要使用公用文件夾,因為它是已編譯的資產目的地,因此您可能會丟失這些文件。

作為替代方案,您可以使用 controller 上傳文件,如下所示:

https://github.com/mikermcneil/ration/blob/master/api/controllers/things/upload-thing.js#L54

之后,將其發送給用戶:

https://github.com/mikermcneil/ration/blob/master/api/controllers/things/download-photo.js#L50

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM