Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
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));
        }