Exemplo n.º 1
0
        static public Model.FileRecord uploadNewVersion(VmosoSession session, String fileKey, String filePath)
        {
            try
            {
                FileApi        fileApi        = new FileApi(session.GetApiClient());
                ViewFileResult viewFileResult = fileApi.ViewFile(fileKey);
                if (viewFileResult.Hdr.Rc == 0)
                {
                    FileRecord fileRecord = viewFileResult.File;

                    String url       = session.Host + "/up/file";
                    String userAgent = session.GetApiClient().Configuration.UserAgent;

                    WebClient client = new WebClient();
                    client.Headers.Add("X-CV-Authorization", session.GetAuthorizationHeader());
                    client.Headers.Add("User-Agent", userAgent);

                    byte[]  response   = client.UploadFile(url, filePath);
                    var     jsonString = System.Text.Encoding.Default.GetString(response);
                    dynamic dynObj     = JsonConvert.DeserializeObject(jsonString);
                    var     file       = dynObj[0];

                    String fileName       = file.name;
                    String fileDownloadId = file.fileDownloadId;
                    String mimeType       = file.mimeType;
                    int    fileSize       = file.filesize;

                    fileRecord.FilestoreFilestore = fileDownloadId;
                    fileRecord.Filesize           = fileSize;

                    UpdateFileInput  updateFileInput  = new UpdateFileInput(fileRecord, null);
                    UpdateFileResult updateFileResult = fileApi.UpdateFile(fileKey, updateFileInput);
                    if (updateFileResult.Hdr.Rc == 0)
                    {
                        return(updateFileResult.Updated);
                    }
                    else
                    {
                        throw new Exception("Error updating file. Rc=" + viewFileResult.Hdr.Rc);
                    }
                }
                else
                {
                    throw new Exception("Error getting file. Rc=" + viewFileResult.Hdr.Rc);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Error uploading new version", ex);
            }
        }
        public virtual async Task <IActionResult> OnPostAsync()
        {
            var dto = await _service.GetAsync(Id);

            if (Path.GetExtension(UploadedFile.FileName) != Path.GetExtension(dto.FileName))
            {
                throw new ReUploadWithDifferentExtensionException();
            }

            var updateFileDto = new UpdateFileInput
            {
                FileName = dto.FileName,
                MimeType = UploadedFile.ContentType,
                Content  = await UploadedFile.GetAllBytesAsync()
            };

            await _service.UpdateAsync(Id, updateFileDto);

            return(NoContent());
        }
Exemplo n.º 3
0
        public virtual async Task <FileInfoDto> UpdateAsync(Guid id, UpdateFileInput input)
        {
            var file = await GetEntityByIdAsync(id);

            var configuration = _configurationProvider.Get(file.FileContainerName);

            CheckFileSize(new Dictionary <string, long> {
                { input.FileName, input.Content?.LongLength ?? 0 }
            }, configuration);
            CheckFileExtension(new[] { Path.GetExtension(input.FileName) }, configuration);

            var parent = await TryGetEntityByNullableIdAsync(file.ParentId);

            await _fileManager.ChangeAsync(file, input.FileName, input.MimeType, input.Content, parent, parent);

            await AuthorizationService.CheckAsync(CreateFileOperationInfoModel(file),
                                                  new OperationAuthorizationRequirement { Name = FileManagementPermissions.File.Update });

            await _repository.UpdateAsync(file);

            await _fileManager.TrySaveBlobAsync(file, input.Content);

            return(await MapToGetOutputDtoAsync(file));
        }
Exemplo n.º 4
0
        public ShareFileItem updateFile(String key, FileInfo fileInfo, String title, String description, List <String> spaceKeys, Bitmap icon)
        {
            try
            {
                FileApi fileApi = new FileApi(session.GetApiClient());

                ViewFileResult viewFileResult = fileApi.ViewFile(key);

                if (viewFileResult.Hdr.Rc == 0)
                {
                    FileRecord existingFile = viewFileResult.File;
                    existingFile.Name        = title;
                    existingFile.Description = description;

                    UpdateFileInput  updateFileInput  = new UpdateFileInput(existingFile, null);
                    UpdateFileResult updateFileResult = fileApi.UpdateFile(key, updateFileInput);

                    if (updateFileResult.Hdr.Rc == 0)
                    {
                        FileRecord updatedFile = updateFileResult.Updated;

                        SpaceApi spaceApi = new SpaceApi(session.GetApiClient());

                        // Remove spaces
                        foreach (DisplayRecord destination in updatedFile.Destinations)
                        {
                            if (!spaceKeys.Contains(destination.Key))
                            {
                                List <String> itemKeysToRemove = new List <String>()
                                {
                                    updatedFile.Key
                                };
                                RemoveObjectsInput  removeObjectsInput  = new RemoveObjectsInput(destination.Key, itemKeysToRemove);
                                RemoveObjectsResult removeObjectsResult = spaceApi.RemoveObjects(destination.Key, removeObjectsInput);
                                if (removeObjectsResult.Hdr.Rc != 0)
                                {
                                    throw new Exception("Vmoso error removing file from space. Rc=" + removeObjectsResult.Hdr.Rc);
                                }
                            }
                            else
                            {
                                spaceKeys.Remove(destination.Key);
                            }
                        }

                        if (spaceKeys.Count > 0)
                        {
                            ShareObjectInput  shareInput  = new ShareObjectInput(null, spaceKeys, null);
                            ShareObjectResult shareResult = spaceApi.ShareObject(updatedFile.Key, shareInput);
                            if (shareResult.Hdr.Rc != 0)
                            {
                                throw new Exception("Vmoso error sharing file. Rc=" + shareResult.Hdr.Rc);
                            }
                        }

                        viewFileResult = fileApi.ViewFile(updatedFile.Key);
                        if (viewFileResult.Hdr.Rc == 0)
                        {
                            updatedFile = viewFileResult.File;
                            ShareFileItem item = new ShareFileItem(updatedFile.Name, updatedFile.Description);
                            item.Key      = updatedFile.Key;
                            item.FileInfo = fileInfo;
                            item.Record   = updatedFile;
                            item.SetIcon(icon);

                            List <ShareSpace> itemSpaces = new List <ShareSpace>();
                            foreach (DisplayRecord spaceDisplayRecord in updatedFile.Destinations)
                            {
                                ShareSpace space = new ShareSpace(spaceDisplayRecord.Key, spaceDisplayRecord.DisplayName, null);
                                itemSpaces.Add(space);
                            }

                            item.Spaces = itemSpaces;
                            return(item);
                        }
                        else
                        {
                            throw new Exception("Vmoso error getting updated file. Rc=" + viewFileResult.Hdr.Rc);
                        }
                    }
                    else
                    {
                        throw new Exception("Vmoso error updating file. Rc=" + updateFileResult.Hdr.Rc);
                    }
                }
                else
                {
                    throw new Exception("Vmoso error getting file to update. Rc=" + viewFileResult.Hdr.Rc);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Vmoso updating file", ex);
            }
        }