如何在meteor中使用upyun又拍云或者七牛上传/下载文件

发布于 2022-09-01 15:23:41 字数 51 浏览 23 评论 0

已经卡在这好多天。。。看了好几遍文档,sdk,完全没有头绪。。。
请高手指教

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

|煩躁 2022-09-08 15:23:41

之前做过一个七牛的。简单说下思路:

依赖的包有:
- iron:router
- meteorhacks:npm

首先 meteor add meteorhacks:npm 用来引入node 依赖,安装完之后,目录下会多了一个packages.json

在里边写入如下内容:

{
  "qiniu": "6.1.8",
  "formidable": "1.0.17"
}

这时,会自动安装这两个node包。就可以在服务端使用了。

在server目录下:新建upload.coffee,写入如下内容:

#上传文件路由
Router.route '/upload',
  name: 'uploadImg'
  where: 'server',
  method: 'POST'
  action: ->
    this.response.write(JSON.stringify(this.request.result), 'utf8')
    this.response.end()


uploadFileToQiniu = (req, res, next) ->
  formidable = Meteor.npmRequire('formidable')
  qiniu = Meteor.npmRequire('qiniu')
  form = new formidable.IncomingForm()
  uploadToken = getUploadToken()
  if req.method == 'POST'
    form.parse(req, (err, fields, files)->
      now = new Date()
      saveTo = "/uploads/#{now.getTime()}-#{files.upload_file.name}"
      qiniu.io.putFile(uploadToken, saveTo, files.upload_file.path, null, (err, ret)->
        if (!err)
          result =
            msg: '上传成功, 处理返回值'
            success: true
            file_path: qiniu_domain + saveTo
        else
          result =
            success: false
            file_path: ''
            msg: '上传失败'
          console.log err
        req.result = result
        next()
      )
    )
  else
    next()
  return


Router.onBeforeAction(uploadFileToQiniu, {
  only: ['uploadImg']
})

在server目录下,新建一个qiniu.coffee,把配置和getUploadToken() 方法写在里边

qiniu = Meteor.npmRequire('qiniu')

qiniu.conf.ACCESS_KEY = 'your access_key'
qiniu.conf.SECRET_KEY = 'your secret_key'
@qiniu_domain = 'your domain'
default_bucket = 'your bucketname'

@getUploadToken = (bucketname)->
  bucketname = default_bucket unless bucketname
  putPolicy = new qiniu.rs.PutPolicy(bucketname)
  #putPolicy.callbackUrl = callbackUrl
  #putPolicy.callbackBody = callbackBody
  #putPolicy.returnUrl = returnUrl
  #putPolicy.returnBody = returnBody
  #putPolicy.asyncOps = asyncOps
  #putPolicy.expires = expires
  return putPolicy.token()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文