Box API Node.js无法上传文件404错误

时间:2017-07-30 03:35:56

标签: node.js box boxapiv2

我无法使用Box API上传文件我的代码:

var sdk = new BoxSDK({
  clientID: BOX_clientID,
  clientSecret: BOX_clientSecret
});





// Create a basic API client
var client = sdk.getBasicClient(BOX_accesstoken);



var fileData = fs.createReadStream('C:\\Exports\\test.txt')

client.files.uploadFile('123', 'test.txt', fileData, function(err, file) {
if (err){
console.log('err: ' + err);
}
else{
console.log('file uploaded: ' + file);  
}
});


// Get some of that sweet, sweet data!
client.users.get(client.CURRENT_USER_ID, null, function(err, currentUser) {
  if(err) throw err;
  console.log('Hello, ' + currentUser.name + '!');
});

这是输出

您好,UserXYZ!
错误:错误:意外的API响应[404未找到](not_found:“未找到”)

另外,我真的不明白如何使用node.js刷新我的令牌,来自docs的代码对我不起作用。是否有人使用示例代码上传文件以及如何无限使用令牌我不想每次都输入新的访问代码。

2 个答案:

答案 0 :(得分:0)

client.files.upload的第一个参数需要是一个有效的folder_id,所以我相信这就是[404 Not Found]出现的原因。所以你可以试试'0'之类的东西。

以下是使用jwt的示例,它将处理令牌刷新。

// --------------- jwt --------------------------
var BoxSDK = require('box-node-sdk');
var fs = require('fs');
var path = require('path');

var CLIENT_ID = 'xxxx',
  CLIENT_SECRET = 'xxxx',
  PUBLIC_KEY_ID = 'xxxx',
  PRIVATE_KEY_PATH = 'xxxx',
  PRIVATE_KEY_PASSPHRASE = 'xxxx',
  ENTERPRISE_ID = 'xxxx';

var sdk = new BoxSDK({
    clientID: CLIENT_ID,
    clientSecret: CLIENT_SECRET,
    appAuth: {
      keyID: PUBLIC_KEY_ID,
      privateKey: fs.readFileSync(path.resolve(__dirname, PRIVATE_KEY_PATH)),
      passphrase: PRIVATE_KEY_PASSPHRASE
    }
});

// --------------- your code ---------------------
var client = sdk.getAppAuthClient('enterprise', ENTERPRISE_ID);

var fileData = fs.createReadStream('C:\\Exports\\test.txt')
client.files.uploadFile('0', 'test.txt', fileData, function(err, file) {
if (err){console.log('err: ' + err);
}
else{console.log('file uploaded: ' + file);  
}
});


// Get some of that sweet, sweet data!
client.users.get(client.CURRENT_USER_ID, null, function(err, currentUser) {
  if(err) throw err;  console.log('Hello, ' + currentUser.name + '!');
});

答案 1 :(得分:0)

好的,我知道发生了什么。如果您使用Box生成的密钥,请执行以下操作。

  1. 创建一个名为config
  2. 的目录
  3. 将Box的配置文件重命名为default.json
  4. 然后代码看起来像这样......

    var BoxSDK = require('box-node-sdk'); var config = require('config'); var fs = require('fs'); var path = require('path');

    var sdk = new BoxSDK({     clientID:config.get('boxAppSettings.clientID'),     clientSecret:config.get('boxAppSettings.clientSecret'),     appAuth:{       keyID:config.get('boxAppSettings.appAuth.publicKeyID'),       privateKey:config.get('boxAppSettings.appAuth.privateKey'),       passphrase:config.get('boxAppSettings.appAuth.passphrase'),       到期时间:60,       verifyTimestamp:false     } });

    var client = sdk.getAppAuthClient('enterprise',“xxxxx”);

    var fileData = fs.createReadStream('/ users / kdomen / Downloads / test.txt') client.files.uploadFile('0','test.txt',fileData,function(err,file){   if(错误){     console.log('err:'+ err);   }   其他{     console.log('文件上传:'+文件);
      } });

    //获取一些甜蜜,甜蜜的数据! client.users.get(client.CURRENT_USER_ID,null,function(err,currentUser){   if(err)throw err; console.log('Hello,'+ currentUser.name +'!'); });