/// <summary> /// Initiates the download of a specific file. /// </summary> /// <param name="objVer">The object that contains the file to download.</param> /// <param name="fileVer">The file to download.</param> /// <param name="token">A cancellation token for the request.</param> /// <returns>The raw response from the HTTP request.</returns> public async Task <byte[]> DownloadFileAsync(ObjVer objVer, FileVer fileVer, CancellationToken token = default(CancellationToken)) { // Sanity. if (null == objVer) { throw new ArgumentNullException(nameof(objVer)); } if (null == fileVer) { throw new ArgumentNullException(nameof(fileVer)); } // Extract the URI elements. int objectTypeId; string objectId, objectVersionId; objVer.GetUriParameters(out objectTypeId, out objectId, out objectVersionId); string fileId, fileVersionId; fileVer.GetUriParameters(out fileId, out fileVersionId); // Build up the request. var request = new RestRequest($"/REST/objects/{objectTypeId}/{objectId}/{objectVersionId}/files/{fileId}/content"); // Execute the request. var response = await this.MFWSClient.Get(request, token) .ConfigureAwait(false); // Return the content. return(response?.RawBytes); }
/// <summary> /// Initiates the download of a specific file. /// </summary> /// <param name="objVer">The object that contains the file to download.</param> /// <param name="fileVer">The file to download.</param> /// <param name="outputStream">The output stream for the response to be written to.</param> /// <param name="token">A cancellation token for the request.</param> /// <returns>The raw response from the HTTP request.</returns> public async Task DownloadFileAsync(ObjVer objVer, FileVer fileVer, System.IO.Stream outputStream, CancellationToken token = default(CancellationToken)) { // Sanity. if (null == objVer) { throw new ArgumentNullException(nameof(objVer)); } if (null == fileVer) { throw new ArgumentNullException(nameof(fileVer)); } // Extract the URI elements. int objectTypeId; string objectId, objectVersionId; objVer.GetUriParameters(out objectTypeId, out objectId, out objectVersionId); string fileId, fileVersionId; fileVer.GetUriParameters(out fileId, out fileVersionId); // Build up the request. var request = new RestRequest($"/REST/objects/{objectTypeId}/{objectId}/{objectVersionId}/files/{fileId}/content"); // Output the response to the given stream. request.ResponseWriter = (responseStream) => responseStream.CopyTo(outputStream); // Execute the request. await this.MFWSClient.Get(request, token) .ConfigureAwait(false); }
static void offp() { var pid = 1; var rid = 1; var sdate = "2016/01/01"; var edate = "2016/08/08"; var input = "{\"principal\":" + pid + ",\"receiver\":" + rid + ",\"startdate\":\"" + sdate + "\",\"enddate\":\"" + edate + "\"}"; var app = new MFilesClientApplication(); var vault = app.BindToVault("8211", IntPtr.Zero, true, true); var FilterReceiver = vault.ExtensionMethodOperations.ExecuteVaultExtensionMethod("GetSecureNotice", input); Console.WriteLine(FilterReceiver); // var filedata = eval('(' + FilterReceiver + ')'); var filedata = JsonConvert.DeserializeObject <ReportPrintData>(FilterReceiver); // alert(filedata.objver.id); // var ObjID = MFiles.CreateInstance("ObjID"); // ObjID.SetIDs (0,filedata); var objver = new ObjVer(); objver.SetIDs(filedata.objtype, filedata.objid, filedata.objversion); var filever = new FileVer(); filever.ID = filedata.fileid; filever.Version = filedata.fileversion; vault.ObjectFileOperations.OpenFileInDefaultApplication(IntPtr.Zero, objver, filever, MFFileOpenMethod.MFFileOpenMethodOpen); }
/// <summary> /// Replaces the content of a(n existing) single file. /// </summary> /// <param name="objVer">The object that the file belongs to.</param> /// <param name="fileVer">The file to replace.</param> /// <param name="filePath">The path to the file to upload in its replacement.</param> /// <param name="token">A cancellation token for the request.</param> /// <returns>The updated object version.</returns> public ExtendedObjectVersion UploadFile(ObjVer objVer, FileVer fileVer, string filePath, CancellationToken token = default(CancellationToken)) { // Use the other overload. return(this.UploadFileAsync(objVer, fileVer, filePath, token) .ConfigureAwait(false) .GetAwaiter() .GetResult()); }
/// <summary> /// Initiates the download of a specific file. /// </summary> /// <param name="objVer">The object that contains the file to download.</param> /// <param name="fileVer">The file to download.</param> /// <param name="token">A cancellation token for the request.</param> /// <returns>The raw response from the HTTP request.</returns> public byte[] DownloadFile(ObjVer objVer, FileVer fileVer, CancellationToken token = default(CancellationToken)) { // Execute the async method. return(this.DownloadFileAsync(objVer, fileVer, token) .ConfigureAwait(false) .GetAwaiter() .GetResult()); }
/// <summary> /// Initiates the download of a specific file. /// </summary> /// <param name="objVer">The object that contains the file to download.</param> /// <param name="fileVer">The file to download.</param> /// <param name="outputFileInfo">The file to output the content to (will be overwritten if exists).</param> /// <param name="token">A cancellation token for the request.</param> /// <returns>The raw response from the HTTP request.</returns> public void DownloadFile(ObjVer objVer, FileVer fileVer, System.IO.FileInfo outputFileInfo, CancellationToken token = default(CancellationToken)) { // Execute the async method. this.DownloadFileAsync(objVer, fileVer, outputFileInfo, token) .ConfigureAwait(false) .GetAwaiter() .GetResult(); }
private async Task <bool> UploadFile(string accessToken) { if (FileUploadModel.FileHeader != null) { if (FileUploadModel.FileHeader.Id == Guid.Empty) { var fileVer = new FileVer() { FileHeaderId = FileUploadModel.FileHeader.Id }; if (string.IsNullOrWhiteSpace(FileUploadModel.URI)) { var fileSizeSetting = await _apiHelper.GetSystemSetting(accessToken, "FILE_UPLOAD_MAX"); var fileExtPermitted = await _apiHelper.GetSystemSetting(accessToken, "FILE_UPLOAD_EXT"); var formFileContent = await FileHelpers.ProcessFormFile <FileUploadModel>( FileUploadModel.FormFile, ModelState, GeneralHelpers.SeperatedListToEnumerable(fileExtPermitted.Value, prefix : ".").ToArray <string>(), long.Parse(fileSizeSetting.Value)); if (!ModelState.IsValid) { return(false); } FileUploadModel.FileHeader.FileDetail.FileExtension = Path.GetExtension(FileUploadModel.FormFile.FileName).ToLowerInvariant(); FileUploadModel.FileHeader.FileDetail.FileType = FileUploadModel.FormFile.ContentType; fileVer.Size = FileUploadModel.FormFile.Length; fileVer.UntrustedName = FileUploadModel.FormFile.FileName; fileVer.TrustedName = WebUtility.HtmlEncode(FileUploadModel.FormFile.FileName); fileVer.Content = formFileContent; } else { fileVer.URI = FileUploadModel.URI; FileUploadModel.FileHeader.FileDetail.FileExtension = "URI"; FileUploadModel.FileHeader.FileDetail.FileType = "URI"; } FileUploadModel.FileHeader.FileLinks.Add(new FileLnk() { LinkId = FileUploadModel.linkId, LinkType = FileUploadModel.linkType, FileHeaderId = FileUploadModel.FileHeader.Id }); FileUploadModel.FileHeader.FileVersions.Add(fileVer); } } return(await CreateOrUpdateFileAsync(accessToken)); }
/// <summary> /// Initiates the download of a specific file. /// </summary> /// <param name="objVer">The object that contains the file to download.</param> /// <param name="fileVer">The file to download.</param> /// <param name="outputFileName">The full path to the file to output to.</param> /// <param name="token">A cancellation token for the request.</param> /// <returns>The raw response from the HTTP request.</returns> public void DownloadFile(ObjVer objVer, FileVer fileVer, string outputFileName, CancellationToken token = default(CancellationToken)) { // Create a FileInfo for the output. var outputFileInfo = new System.IO.FileInfo(outputFileName); // Execute the async method. this.DownloadFileAsync(objVer, fileVer, outputFileInfo, token) .ConfigureAwait(false) .GetAwaiter() .GetResult(); }
/// <summary> /// Creates a <see cref="FileUploadStream"/> but does not open the upload session. /// </summary> /// <param name="fileToOverwrite">The file to overwrite.</param> /// <param name="objId">The object the file belongs to.</param> /// <param name="vault">The vault to download from.</param> /// <param name="automaticallyCommitOnDisposal">If true, will automatically save the file contents to the vault when this stream is disposed of.</param> public FileUploadStream ( FileVer fileToOverwrite, ObjID objId, Vault vault, bool automaticallyCommitOnDisposal = true ) { // Set properties. this.FileToOverwrite = fileToOverwrite ?? throw new ArgumentNullException(nameof(fileToOverwrite)); this.ObjId = objId ?? throw new ArgumentNullException(nameof(objId)); this.Vault = vault ?? throw new ArgumentNullException(nameof(vault)); this.AutomaticallyCommitOnDisposal = automaticallyCommitOnDisposal; }
/// <summary> /// Replaces the content of a(n existing) single file. /// </summary> /// <param name="objVer">The object that the file belongs to.</param> /// <param name="fileVer">The file to replace.</param> /// <param name="filePath">The path to the file to upload in its replacement.</param> /// <param name="token">A cancellation token for the request.</param> /// <returns>The updated object version.</returns> public async Task <ExtendedObjectVersion> UploadFileAsync(ObjVer objVer, FileVer fileVer, string filePath, CancellationToken token = default(CancellationToken)) { // Sanity. if (null == objVer) { throw new ArgumentNullException(nameof(objVer)); } if (null == fileVer) { throw new ArgumentNullException(nameof(fileVer)); } try { if (false == System.IO.File.Exists(filePath)) { throw new ArgumentException("The file path must exist.", nameof(filePath)); } } catch (Exception e) { throw new ArgumentException("Could not confirm file path location.", nameof(filePath), e); } // Extract the URI elements. int objectTypeId; string objectId, objectVersionId; objVer.GetUriParameters(out objectTypeId, out objectId, out objectVersionId); string fileId, fileVersionId; fileVer.GetUriParameters(out fileId, out fileVersionId); // Build up the request. var request = new RestRequest($"/REST/objects/{objectTypeId}/{objectId}/{objectVersionId}/files/{fileId}/content.aspx"); // Add the file as a body. var fileInfo = new System.IO.FileInfo(filePath); request.AddFile(fileInfo.Name, fileInfo.FullName); // Execute the request. var response = await this.MFWSClient.Put <ExtendedObjectVersion>(request, token) .ConfigureAwait(false); // Return the data. return(response.Data); }
/// <summary> /// Renames a specific file. /// </summary> /// <param name="objVer">The object containing the file to rename.</param> /// <param name="fileVer">The file to rename.</param> /// <param name="newFileName">The (new) file name.</param> /// <param name="token">A cancellation token for the request.</param> /// <returns>The updated object version.</returns> public ObjectVersion RenameFile(ObjVer objVer, FileVer fileVer, string newFileName, CancellationToken token = default(CancellationToken)) { // Sanity. if (null == objVer) { throw new ArgumentNullException(nameof(objVer)); } if (null == fileVer) { throw new ArgumentNullException(nameof(fileVer)); } // Call the other overload. return(this.RenameFileAsync(objVer.Type, objVer.ID, fileVer.ID, newFileName, objVer.Version, fileVer.Version, token) .ConfigureAwait(false) .GetAwaiter() .GetResult()); }
/// <summary> /// Initiates the download of a specific file. /// </summary> /// <param name="objVer">The object that contains the file to download.</param> /// <param name="fileVer">The file to download.</param> /// <param name="outputFileInfo">The file to output the content to (will be overwritten if exists).</param> /// <param name="token">A cancellation token for the request.</param> /// <returns>An awaitable task for the download process.</returns> public async Task DownloadFileAsync(ObjVer objVer, FileVer fileVer, System.IO.FileInfo outputFileInfo, CancellationToken token = default(CancellationToken)) { // Sanity. if (null == outputFileInfo) { throw new ArgumentNullException(nameof(outputFileInfo)); } // Delete the file if it already exists. if (outputFileInfo.Exists) { outputFileInfo.Delete(); } // Open a stream to the file. using (var stream = outputFileInfo.Create()) { // Download the file to disk. await this.DownloadFileAsync(objVer, fileVer, stream, token) .ConfigureAwait(false); } }
public async Task <IActionResult> PostAsync([FromBody] FileVer fileVer) { try { if (fileVer.Id == Guid.Empty) { var fileVersion = _mapper.Map <FileVersion>(fileVer); await _fileManager.SetFileVersionSequenceNoAsync(fileVersion); _unitOfWork.FileVersions.Add(fileVersion); _unitOfWork.Complete(); return(Created(new Uri($"{Request.Path}/{fileVersion.Id}", UriKind.Relative), _mapper.Map <FileVer>(fileVersion))); } } catch (Exception e) { string message = e.Message; } return(BadRequest()); }
public byte[] GetThumbnailAsBytes(ObjVer objVer, FileVer fileVer, int width, int height, bool getFileIconThumbnailIfRealThumbnailNotAvailable) { vault.MetricGatherer.MethodCalled(); throw new NotImplementedException(); }
/// <summary> /// 给对象添加文件 /// </summary> /// <param name="vault"></param> /// <param name="obj"></param> /// <param name="removeFiles">是否删除现有文件</param> /// <param name="filePath"></param> /// <param name="pvs"></param> /// <returns></returns> public static ObjectVersion AddFiles(Vault vault, ObjectVersion obj, bool removeFiles, string[] filePath, PropertyValues pvs) { if (filePath == null || filePath.Length == 0) { return(null); } var file0 = filePath[0]; var title = Path.GetFileNameWithoutExtension(file0); var extension = Path.GetExtension(file0).TrimStart(new char[] { '.' }); var checkedOut = vault.ObjectOperations.IsCheckedOut(obj.ObjVer.ObjID); var objVersion = obj; if (!checkedOut) { objVersion = vault.ObjectOperations.CheckOut(obj.ObjVer.ObjID); } if (objVersion.SingleFile && objVersion.Files.Count > 0) { var oFileVer = new FileVer { ID = objVersion.Files[1].FileVer.ID, Version = -1 }; //先设置为多文档 vault.ObjectOperations.SetSingleFileObject(objVersion.ObjVer, false); //删除原文件 vault.ObjectFileOperations.RemoveFile(objVersion.ObjVer, oFileVer); //添加新文件 vault.ObjectFileOperations.AddFile(objVersion.ObjVer, title, extension, file0); for (var i = 1; i < filePath.Length; i++) { var title1 = Path.GetFileNameWithoutExtension(filePath[i]); var extension1 = Path.GetExtension(filePath[i]).TrimStart(new char[] { '.' }); vault.ObjectFileOperations.AddFile(objVersion.ObjVer, title1, extension1, filePath[i]); } //还原为单文档 if (filePath.Length == 1) { vault.ObjectOperations.SetSingleFileObject(objVersion.ObjVer, true); } } else { if (removeFiles) { foreach (ObjectFile file in objVersion.Files) { vault.ObjectFileOperations.RemoveFile(objVersion.ObjVer, file.FileVer); } } //添加新文件 vault.ObjectFileOperations.AddFile(objVersion.ObjVer, title, extension, file0); for (var i = 1; i < filePath.Length; i++) { var title1 = Path.GetFileNameWithoutExtension(filePath[i]); var extension1 = Path.GetExtension(filePath[i]).TrimStart(new char[] { '.' }); vault.ObjectFileOperations.AddFile(objVersion.ObjVer, title1, extension1, filePath[i]); } if (removeFiles && filePath.Length == 1) { var singleFilePv = new PropertyValue { PropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefSingleFileObject }; singleFilePv.Value.SetValue(MFDataType.MFDatatypeBoolean, true); if (pvs == null) { objVersion = vault.ObjectPropertyOperations.SetProperty(objVersion.ObjVer, singleFilePv).VersionData; } else { pvs.Add(-1, singleFilePv); } } if (pvs != null) { objVersion = vault.ObjectPropertyOperations.SetProperties(objVersion.ObjVer, pvs).VersionData; } } if (!checkedOut) { obj = vault.ObjectOperations.CheckIn(objVersion.ObjVer); } return(obj); }
public FileVersionUploadModel() { FileVersion = new FileVer(); URI = string.Empty; }