0

Forge データ管理 API を使用して A360 ファイルにアクセスし、ビューアで表示できるようにそれらを SVF 形式に変換することを目指しています。これまでのところ、ForgeDataManagement.ItemsApi を使用して目的のアイテムに到達できましたが、アイテムをアプリケーションのバケットにアップロードする方法がわかりません。

ドキュメントからは、uploadObject が進むべき道 ( https://github.com/Autodesk-Forge/forge.oss-js/blob/master/docs/ObjectsApi.md#uploadObject ) のようですが、わかりませんこの機能を機能させる正確な方法。

var dmClient = ForgeDataManagement.ApiClient.instance;
var dmOAuth = dmClient.authentications ['oauth2_access_code'];
dmOAuth.accessToken = tokenSession.getTokenInternal();
var itemsApi = new ForgeDataManagement.ItemsApi();

fileLocation = decodeURIComponent(fileLocation);
var params = fileLocation.split('/');
var projectId = params[params.length - 3];
var resourceId = params[params.length - 1];

itemsApi.getItemVersions(projectId, resourceId)
 .then (function(itemVersions) {
   if (itemVersions == null || itemVersions.data.length == 0) return;

   // Use the latest version of the item (file).
   var item = itemVersions.data[0];

   var contentLength = item.attributes.storageSize;                  
   var body = new ForgeOSS.InputStream();
   // var body = item; // Using the item directly does not seem to work.
   // var stream = fs.createReadStream(...) // Should I create a stream object lik suggested in the documention?

   objectsAPI.uploadObject(ossBucketKey, ossObjectName, contentLength, body, {}, function(err, data, response) {
     if (err) {
       console.error(err);
     } else {
       console.log('API called successfully. Returned data: ' + data);

       //To be continued...
     }

誰かが私を助けてくれることを願っています!

私の現在のデータ:

ossObjectName = "https://developer.api.autodesk.com/data/v1/projects/"myProject"/items/urn:"myFile".dwfx";
ossBucketKey = "some random string based on my username and id";

よろしく、トージャス

4

2 に答える 2

0

Adam Nagy からのサポートの後、私たちは物事を機能させる方法を見つけました。簡単に言うと、すべての操作には A360 アカウントからのドキュメントが含まれるため、3 レッグ OAuth を使用してすべてを実行する必要がありました。これには、ファイル構造へのアクセスと表示、ドキュメントの SVF への変換、ビューアの起動、ドキュメントのビューアへのロードが含まれます。

また、ドキュメントを翻訳しようとしたときに、間違った ID をターゲットにしていました。この投稿は、情報を提供してくれた Adam に感謝します。

于 2016-12-29T20:30:42.097 に答える
0

DataManagement API を使用する場合、次のいずれかを使用できます。

  • 2 レッグ oAuth (client_credentials) と OSS のバケットとオブジェクトへのアクセス、
  • または 3 脚 (authorization_code) で、ユーザーのハブ、プロジェクト、フォルダー、アイテム、およびリビジョンにアクセスします

3 Legged を使用する場合、A360 または BIM360 で誰かのコンテンツにアクセスし、これらのファイルはシステムによって自動的に翻訳されるため、再度翻訳する必要はなく、2 Legged アプリケーション バケットに転送する必要はありません。必要なのは、アイテムまたはそのリビジョンのマニフェストを取得し、URN を使用してビューアーで表示することだけです。

ここで例を確認してください: https://developer.autodesk.com/en/docs/data/v2/reference/http/projects-project_id-versions-version_id-GET/

例: 特定のバージョンの正常な取得 (200) のようなものが表示されます。

curl -X GET -H "Authorization: Bearer kEnG562yz5bhE9igXf2YTcZ2bu0z" "https://developer.api.autodesk.com/data/v1/projects/a.45637/items/urn%3Aadsk.wipprod%3Adm.lineage%3AhC6k4hndRWaeIVhIjvHu8w"
{
  "data": {
    "relationships": {
      "derivatives": {
        "meta": {
          "link": {
            "href": "/modelderivative/v2/designdata/dXJuOmFkc2sud2lwcWE6ZnMuZmlsZTp2Zi50X3hodWwwYVFkbWhhN2FBaVBuXzlnP3ZlcnNpb249MQ/manifest"
          }
        },

ここで、アップロードに関する他の質問に答えるために、 https ://github.com/Autodesk-Forge/forge.commandline-nodejs/blob/master/forge-cb.js#L295 で例を入手でき ます。関連するコードをここにコピーして、誰もが使用方法を確認できるようにしました。

fs.stat (file, function (err, stats) {
    var size =stats.size ;
    var readStream =fs.createReadStream (file) ;
    ossObjects.uploadObject (bucketKey, fileKey, size, readStream, {}, function (error, data, response) {
        ...
    }) ;
}) ;

ossObjects は 2 本足用であるのに対し、Items、Versions は 3 本足用であることを覚えておいてください。

于 2016-12-15T08:04:13.333 に答える