Esempio n. 1
0
        //checks if a file already exists, uploads it if not
        private static void CheckOrUploadFile(string localFolder, string cmsDestinationPath, AccessAsset accessAsset, string file)
        {
            string cmsPathToCheck = "";

            //1 - check if file already exists
            cmsPathToCheck = file.ToLower().Replace(localFolder, cmsDestinationPath).Replace("\\", "/");
            var existsResponse = accessAsset.Exists(new AssetExistsRequest(cmsPathToCheck));

            if (existsResponse.exists)
            {
                Console.WriteLine("Skipping, asset {0} already exists.  (id: {1})", cmsPathToCheck, existsResponse.assetId);
            }
            else
            {
                //file was not found in the CMS instance, so we will upload it, but first make sure we do have an existing folder structure in the CMS
                //2 - check if folder exists, create otherwise
                string path     = Path.GetDirectoryName(file);
                int    folderId = -1;
                if (folderCache.ContainsKey(path))
                {
                    folderId = folderCache[path];
                }
                else
                {
                    //attempt to create folder and cache new assetId as the folderId
                    cmsPathToCheck = path.ToLower().Replace(localFolder, cmsDestinationPath).Replace("\\", "/");
                    existsResponse = accessAsset.Exists(new AssetExistsRequest(cmsPathToCheck));
                    if (existsResponse.exists)
                    {
                        folderId = existsResponse.assetId;
                        folderCache.Add(path, folderId);
                    }
                    else
                    {
                        //could not find folder, split and build path
                        folderId = BuildFolderTree(cmsPathToCheck);
                        if (folderId < 0)
                        {
                            //something went wrong, exit app, so we don't upload files to wrong folders, or have excessive # of errors.
                            Console.WriteLine("Error, Unable to create folder {0} ", cmsPathToCheck);
                            Environment.Exit(-1);
                        }
                        folderCache.Add(path, folderId);
                    }
                }

                //upload asset here
                AssetUploadRequest req = new AssetUploadRequest(Path.GetFileName(file), folderId);
                req.bytes = File.ReadAllBytes(file);
                var resp = accessAsset.Upload(req);
                if (resp.IsSuccessful)
                {
                    Console.WriteLine("upload successful: {0} in {1}", file, path, resp.asset.id);
                }
                else
                {
                    Console.WriteLine("Error uploading file: {0} in {1}: {2}", file, path, resp.ErrorMessage);
                }
            }
        }
Esempio n. 2
0
        public bool Upload(string name, int folderId, int modelId, int workflowId, byte[] bytes, out WorklistAsset asset)
        {
            AssetUploadRequest assetUploadRequest = new AssetUploadRequest()
            {
                newName             = name,
                destinationFolderId = folderId,
                modelId             = modelId,
                workflowId          = workflowId,
                bytes = bytes
            };
            string str  = JsonConvert.SerializeObject(assetUploadRequest);
            string str1 = this._api.SendRequest("POST", string.Format("/Asset/Upload", new object[0]), str);
            AssetUploadResponse assetUploadResponse = JsonConvert.DeserializeObject <AssetUploadResponse>(str1);

            asset = assetUploadResponse.asset;
            return(assetUploadResponse.IsSuccessful);
        }
        public async Task <AssetUploadResult> SaveAssetAsync(AssetUploadRequest asset)
        {
            using (var stream = new FileStream(asset.FilePath, FileMode.Create))
            {
                try
                {
                    await asset.File.CopyToAsync(stream);

                    await stream.FlushAsync();

                    return(AssetUploadResult.Success);
                }
                catch
                {
                    return(AssetUploadResult.Failure);
                }
            }
        }
Esempio n. 4
0
        public async Task <AssetUploadResult> SaveAssetAsync(AssetUploadRequest asset)
        {
            var container = await GetContainerAsync(asset.ContainerName);

            try
            {
                var blockBlob = container.GetBlockBlobReference(asset.FileName);

                using (var blobStream = asset.File.OpenReadStream())
                    await blockBlob.UploadFromStreamAsync(blobStream);

                return(AssetUploadResult.Success);
            }
            catch
            {
                return(AssetUploadResult.Failure);
            }
        }
Esempio n. 5
0
        public async Task <IActionResult> UploadAsync(List <IFormFile> files, string container = "")
        {
            var response = new List <AssetUploadResponse>();

            TotalSize = files.Sum(f => f.Length);

            if (container.HasValue())
            {
                CloudContainerName = container;
            }

            foreach (var file in files)
            {
                if (file.Length == 0)
                {
                    continue;
                }

                var assetDirectory = _settings.CurrentValue.AssetDirectory;
                var assetWebPath   = _settings.CurrentValue.AssetWebPath;
                FileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
                FileName = (!string.IsNullOrWhiteSpace(FileName)) ? FileName : Convert.ToString(Guid.NewGuid());
                FilePath = Path.Combine(assetDirectory, FileName);

                var uploadRequest = new AssetUploadRequest()
                {
                    ContainerName = CloudContainerName,
                    File          = file,
                    FileName      = this.FileName,
                    FilePath      = this.FilePath
                };

                //TODO: TryGetAudioAsset(out AudioAsset audio), TryGetVideoAsset(out VideoAsset video)

                if (file.TryGetImageAsset(out ImageAsset image))
                {
                    // save the file to storage
                    var saveImageAsset = await _assetStorageService.SaveAssetAsync(uploadRequest);

                    if (saveImageAsset != AssetUploadResult.Success)
                    {
                        continue;
                    }

                    // save image metadata to data store
                    image.FileName    = this.FileName;
                    image.ContentType = file.ContentType.ToLower();
                    image.DateCreated = DateTime.UtcNow;
                    image.CreatedBy   = UserID;

                    var imageID = await _imageRepository.CreateAsync(image, UserID);

                    // return upload report to client
                    var imageAssetResponse = new AssetUploadResponse()
                    {
                        ID       = imageID,
                        FileName = this.FileName,
                        Size     = file.Length,
                        Uri      = file.GetAssetUri(assetWebPath, this.FileName)
                    };

                    response.Add(imageAssetResponse);
                }
                else
                {
                    // save the file to storage
                    var saveAsset = await _assetStorageService.SaveAssetAsync(uploadRequest);

                    if (saveAsset != AssetUploadResult.Success)
                    {
                        continue;
                    }

                    // save file metadata to data store
                    var asset = new Asset()
                    {
                        FileName    = this.FileName,
                        ContentType = file.ContentType.ToLower(),
                        DateCreated = DateTime.UtcNow,
                        CreatedBy   = UserID
                    };

                    var assetID = await _assetRepository.CreateAsync(asset, UserID);

                    // return upload report to client
                    var assetResponse = new AssetUploadResponse()
                    {
                        ID       = assetID,
                        FileName = this.FileName,
                        Size     = file.Length,
                        Uri      = file.GetAssetUri(assetWebPath, this.FileName)
                    };

                    response.Add(assetResponse);
                }
            }

            var assetUri = HttpUtility.UrlEncode(response[0].Uri, System.Text.Encoding.UTF8);

            return(Created(assetUri, response));
        }
 public AssetUploadResponse Upload(AssetUploadRequest request)
 {
     return(process <AssetUploadResponse>("Upload", request));
 }