根据七牛Node.js SDK文档 写入上传文件代码报错: invalid putpolicy options

新手上路,请多包涵

问题描述

根据七牛Node.js SDK文档 写入上传文件代码报错: invalid putpolicy options

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

const fs = require("fs");
// 相册相对路径
const path = "./photos/";
 
var qiniu = require("qiniu");
 
 
//需要填写你的 Access Key 和 Secret Key
qiniu.conf.ACCESS_KEY = '###';
qiniu.conf.SECRET_KEY = '###';
 
//要上传的空间 你自己的
bucket = '###';
 
//构建上传策略函数
function uptoken(bucket, key) {
  var putPolicy = new qiniu.rs.PutPolicy(bucket+":"+key);
  return putPolicy.token();
}
 
//构造上传函数
function uploadFile(uptoken, key, localFile) {
  var extra = new qiniu.io.PutExtra();
  qiniu.io.putFile(uptoken, key, localFile, extra, function (err, ret) {
    if (!err) {
      // 上传成功, 处理返回值
      console.log('upload success : ', ret.hash, ret.key);
    } else {
      // 上传失败, 处理返回代码
      console.log(err);
    }
  });
}

//读取文件后缀名称,并转化成小写
function getFilenameSuffix(file_name) {
  if (file_name == '.DS_Store') {
    return '.DS_Store';
  }
  if (file_name == null || file_name.length == 0)
    return null;
  var result = /\.[^\.]+/.exec(file_name);
  return result == null ? null : (result + "").toLowerCase();
}
 
//获取文件名后缀名
String.prototype.extension = function () {
  var ext = null;
  var name = this.toLowerCase();
  var i = name.lastIndexOf(".");
  if (i > -1) {
    var ext = name.substring(i);
  }
  return ext;
}
 
//判断Array中是否包含某个值
Array.prototype.contain = function (obj) {
  for (var i = 0; i < this.length; i++) {
    if (this[i] === obj)
      return true;
  }
  return false;
};
 
// 类型匹配
function typeMatch(type, filename) {
  var ext = filename.extension();
  if (type.contain(ext)) {
    return true;
  }
  return false;
}
 
fs.readdir(path, function (err, files) {
  if (err) {
    return;
  }
  var arr = [];
  (function iterator(index) {
    if (index == files.length) {
      fs.writeFile("./source/photo/output.json", JSON.stringify(arr, null, "\t"));
      return;
    }
    fs.stat(path + files[index], function (err, stats) {
      if (err) {
        return;
      }
      if (stats.isFile()) {
        var imgExt = new Array(".png", ".jpg", ".jpeg", ".bmp", ".gif"); //图片文件的后缀名
        if (typeMatch(imgExt, files[index])) {
          var suffix = getFilenameSuffix(files[index]);
          if (!(suffix == '.js' || suffix == '.DS_Store')) {
            //要上传文件的本地路径
            filePath = path + files[index];
            console.log(files[index]);
            //上传到七牛后保存的文件名
            key = files[index];
            //生成上传 Token
            token = uptoken(bucket, key);
 
            uploadFile(token, key, filePath);
            arr.push(files[index]);
          }
        }
      }
      iterator(index + 1);
    })
  }(0));
});

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 1.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题