1

コードを使用して Vault (Vault 2015 SDK) からファイルをダウンロードしようとしていますC#。ここで述べたのとまったく同じアプローチを試みました: http://inventorhub.autodesk.com/discussions/threads/301/post/5600165 しかし、エラーが発生しました

ファイルをダウンロードするためのコードの各行を実行中に、リクエストが HTTP ステータス 404: Not Found で失敗しました。

私のサンプルコードの下に見つけてください:

using Autodesk.Connectivity.WebServicesTools;
using Autodesk.Connectivity.WebServices; 

UserPasswordCredentials login = new UserPasswordCredentials("servername", "myVault", "username", "Password", true);
using (WebServiceManager serviceManager = new WebServiceManager(login))
{
    Autodesk.Connectivity.WebServices.Folder folder = serviceManager.DocumentService.GetFolderByPath("$/Myfolder");
    Autodesk.Connectivity.WebServices.File[] files = serviceManager.DocumentService.GetLatestFilesByFolderId(folder.Id, false);
    if (files != null && files.Any())
    {
        foreach (Autodesk.Connectivity.WebServices.File file in files)
        {
            //Sample code to download the files
            string localPath = AppDomain.CurrentDomain.BaseDirectory;
            Autodesk.Connectivity.WebServices.File localFile = serviceManager.DocumentService.GetFileById(file.Id);
            var FileDownloadTicket = serviceManager.DocumentService.GetDownloadTicketsByFileIds(new long[] { file.Id });
            FilestoreService fileStoreService = new FilestoreService();
            var fileBytes = fileStoreService.DownloadFilePart(FileDownloadTicket[0].Bytes, 0, localFile.FileSize, false);
            System.IO.File.WriteAllBytes(localPath, fileBytes);
        }
    }
}

でエラーを取得していますfileStoreService.DownloadFilePart(FileDownloadTicket[0].Bytes, 0, localFile.FileSize, false);。ファイルを手動でダウンロードできますが、プログラムではダウンロードできません。私は何を間違っていますか?また、メタデータに基づいてファイルをダウンロードするためのサンプル コードを取得できれば幸いです。

ありがとう!

4

2 に答える 2

5

「取得」したいファイルをダウンロードする場合。

オブジェクトの SDK ドキュメントを参照してください。 Autodesk.DataManagement.Client.Framework.Vault.Currency.Connections.Connection

接続オブジェクトを作成したら、それを使用してファイルを取得します (これは、ファイルをチェックアウトする方法でもあることに注意してください)。

using VDF = Autodesk.DataManagement.Client.Framework;

var acquireSettings = new VDF.Vault.Settings.AcquireFilesSettings(
    connection, updateFileReferences: false);

foreach (var file in files)
{
    acquireSettings.AddFileToAcquire(
        new VDF.Vault.Currency.Entities.FileIteration(connection, file),
        VDF.Vault.Settings.AcquireFilesSettings.AcquisitionOption.Download);
}

VDF.Vault.Results.AcquireFilesResults results = connection.FileManager.AcquireFiles(acquireSettings);
于 2015-05-13T16:34:47.890 に答える
1

修正しました

FilestoreService fileStoreService = new FilestoreService()

FilestoreService fileStoreService = serviceManager.FilestoreService

質問に投稿された抜粋されたコードで、それは機能しました。

于 2015-10-23T17:43:20.333 に答える