//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); } } }
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); } } }
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); } }
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)); }