Autodesk Data Management API - ответ Get Image возвращает двоичный код. Что теперь? - PullRequest
0 голосов
/ 10 января 2020

Таким образом, используя https://developer.api.autodesk.com/oss/v2/buckets/: bucketKey / objects /: objectName и javascript - я вернул двоичное изображение, которое не будет сохранено. Я использовал fs, btoa, base64 и некоторые другие, но во всех сохраненных файлах ошибка с нераспознанным форматом.

Ошибка изображения Независимо от того, что я пытаюсь, я получаю эту ошибку, кроме случаев, когда я использую почтальон и использовать saveas. Я искал, почему это работает в почтальоне, но я не могу найти надежного ответа. Так что

вот что у меня есть

try {
        var data = null;
        var access_token = JSON.parse(Atoken);
        var settingspho = {
            "url": "https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/" + urnid,
            "method": "GET",            
            "timeout": 0,
            "headers": {
                "Authorization": "Bearer " + access_token.access_token,
                "Content-Type": "application/json"                
            },
        };

        $.ajax(settingspho).done(function (response, body) {

           

           var data = 'data:image/jpeg;base64,' + btoa(response);
           \\ tried this too \\var buf = new Buffer(data, 'base64');
            

            const jsonfile = './photos/' + urnid;
            
          
            fs.writeFile(jsonfile,buf, function (err) {
                if (err) throw err;
            });
            
        });
        
    }    
    catch (err) {
        alert(err);
    }

Вот снимок ответа Ответ почтальона

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Итак, после некоторой переделки и поста Eason, вот как скачать файлы с oss ..

 try {

        var access_token = JSON.parse(Atoken);
        var xhr = new XMLHttpRequest();
        xhr.withCredentials = true;

        xhr.addEventListener("readystatechange", function () {
            if (this.readyState === 4 && this.status === 200) { 

                

                var res = this.response; 
                const jsonfile = './photos/'+ urnid; 
               
                try {
                                                         
                    fs.writeFile(jsonfile, toBuffer(res), function (err) {
                        if (err) throw err;
                    });


                }                               
                 catch (err) {
                     alert(err);
                 }
         
               


            }
        });

        xhr.open("GET", "https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/" + urnid,);
        xhr.setRequestHeader("Authorization", "Bearer " + access_token.access_token);
        xhr.setRequestHeader("Content-Type", "application/octet-stream");
        xhr.responseType = 'arraybuffer';
        xhr.send();

        

       
        
    }    
    catch (err) {
        alert(err);
    }
};

function toBuffer(ab) {
    var buf = Buffer.alloc(ab.byteLength);
    var view = new Uint8Array(ab);
    for (var i = 0; i < buf.length; ++i) {
        buf[i] = view[i];
    }
    return buf;
}
0 голосов
/ 13 января 2020

Чтобы загрузить двоичные данные из службы Forge OSS с помощью jQuery, вам понадобится пользовательский Ajax транспорт jQuery, и вот вам рабочий пример:

{ ссылка }

Кстати, имя объекта элемента, хранящегося в BIM360, является базой GUID, например, eae32ae2-ed34-41c2-8cfd-7bb9919fddcb.jpg, 066edf4c-e546-4cf9-bb6a-4c93968dad00.dwg или 5df33424-1ee4-49fe-bf0f-8ca5b9642cd1.rvt. Вы не можете использовать имя файла напрямую.

...