autodesk-forge - 以node.js 斷點續傳將模型上傳到Autodesk Forge,但api無回應?
巴扎黑
巴扎黑 2017-04-17 16:24:17
0
1
447

以下code測試,api沒有回應說目前上傳到那段,就直接timeout。再麻煩檢視程序是否有誤。謝謝!

function _uploadChunk(fileName, filePath, oAuth2TwoLegged, credentials, progressCallback) {

return new Promise((resolve, reject) => {
    let objectApi = new ForgeSDK.ObjectsApi()
    let fileState = fs.statSync(filePath)
    let fileSize = fileState.size
    let chunkSize = 2 * 1024 * 1024
    let nbChunks = Math.round(0.5 + fileSize / chunkSize)
    let sessionID = 'testviotv4054irt'// + Math.floor(Date.now() / 1000)

    for (let index = 0; index < nbChunks; index++) {
        let start = index * chunkSize
        let end = Math.min(fileSize, (index + 1) * chunkSize) - 1
        let contentRange = 'bytes ' + start + '-' + end + '/' + fileSize
        let readStream = fs.createReadStream(filePath, { start: start, end: end })
        objectApi.uploadChunk(config.defaultBucketKey, fileName, fileSize, contentRange, sessionID, readStream, {}, oAuth2TwoLegged, credentials)
            .then(object => {
                if (object.statusCode == 202) {
                    progressCallback(object.body)
                } else if (object.statusCode == 202) {
                    resolve(object.body)
                }
            }).catch(err => {
                resolve(err)
            })
    }
})

}

巴扎黑
巴扎黑

全員に返信(1)
PHPzhong

まず、コードの UploadChunk は、特定のチャンクのサイズではなく、ファイル全体のサイズである fileSize を使用します。さらに、最後のブロックが成功した後のステータスである object.statusCode == 200 のステータスが必要です。

私は ES6 にあまり詳しくないので、Forge Node.js SDK のテスト スクリプトを元に、155 行目の UploadFile をテスト用に置き換えて関数を書きました。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート