Загрузите файл из AutoDesk Vault (Vault 2015 SDK) с кодом С#, выдающим ошибку

Я пытаюсь загрузить файл из 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);. Я могу загрузить файл вручную, но не программно. Что я делаю не так ? Также было бы здорово, если бы я мог получить пример кода для загрузки файла на основе метаданных.

Спасибо!


person hakuna    schedule 30.04.2015    source источник


Ответы (2)


Для загрузки файлов вы хотите «Приобрести» их.

См. документацию 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);
person Jason Faulkner    schedule 13.05.2015
comment
Это метод, предложенный Autodesk. Вот хорошая статья, написанная Дугом Редмондом, одним из инженеров Autodesk, который помогал разрабатывать Vault API. justonesandzeros.typepad.com/blog/2013/05/ - person Fütemire; 13.07.2017

я изменил

FilestoreService fileStoreService = new FilestoreService()

to

FilestoreService fileStoreService = serviceManager.FilestoreService

в коде, опубликованном в вопросе, и это сработало.

person hakuna    schedule 23.10.2015