2017-07-30 9 views
0

我不能上传文件,盒API我的代码:盒API的Node.js着上传文件的404

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!
错误:错误:[404未找到]意外的API响应(NOT_FOUND:“未找到”)

而且我真的鸵鸟政策了解如何刷新我的node.js的从文档的代码是不工作的令牌为了我。有人正在上传文件的示例代码,以及我如何无限使用令牌,我不想每次都输入新的访问代码。

回答

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 + '!'); 
}); 
+0

首先感谢您的示例代码。但是,您如何为此PRIVATE_KEY_PATH ='C:\\ box cloud \\ key.key'生成私钥。我为自己创建了一个带有崇高的密钥文件,并从BOX生成的json中复制私钥。我用真正的换行符替换\ n,并在每行结尾添加^ M。但也没有^ M我得到这个错误。 错误:错误:0906D06C:PEM例程:PEM_read_bio:没有开始行 – t33n

+0

编辑:当我用原始方式从私钥添加私钥到私钥:然后错误消失,但后来我得到错误:意外的API响应[400错误请求] – t33n

+0

另外,如果我使用没有\ n的key.pem文件,但我用真正的换行符替换它。我得到错误的请求错误 – t33n

0

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

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

    VAR BoxSDK =需要('箱节点 - SDK'); var config = require('config'); var fs = require('fs'); var path = require('path');

    变种SDK =新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'), expirationTime:60, verifyTimestamp:false } });

    var client = sdk.getAppAuthClient('enterprise',“xxxxx”); (0),'test.txt',fileData,function(err,file){0},'test.txt'{0},'test.txt'{0},'test.txt' 如果(ERR){ 的console.log( 'ERR:' + ERR); } 否则{ 的console.log( '文件上传:' +文件);
    } });

    //获得一些甜蜜,甜蜜的数据! (err)throws err; console.log('Hello',+ currentUser.name +'!'); });

+0

我下载了配置模块,然后就像你告诉我的一样。我再次遇到400错误的请求错误。我用这个代码https://pastebin.com/KJPkVTtq,就像你一样。我还尝试手动加载json fs.readFileSync,然后以config.clientID作为示例输入详细信息,同时还输入了400个错误的请求错误。同样的结果与关闭防火墙。 – t33n

+0

我会尝试创建一个新项目。并再次尝试 – t33n

+0

与新鲜创建的应用程序相同的结果,我删除了旧的。我在开始创建新应用程序时选择了企业选项,您可以选择3个选项。任何其他idead我如何才能使它工作?或者你有oAuth2的刷新选项?这是我的设置http://imgur.com/a/sSSQj我也在这个屏幕中选择了企业而不是应用程序作为选项。 – t33n