/// <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);
        }
Exemple #3
0
        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();
 }
Exemple #7
0
        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);
        }
Exemple #11
0
        /// <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);
            }
        }
Exemple #13
0
        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());
        }
Exemple #14
0
        public byte[] GetThumbnailAsBytes(ObjVer objVer, FileVer fileVer, int width, int height, bool getFileIconThumbnailIfRealThumbnailNotAvailable)
        {
            vault.MetricGatherer.MethodCalled();

            throw new NotImplementedException();
        }
Exemple #15
0
        /// <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;
 }