public async Task <IActionResult> Get([FromRoute] string authorization, int id)
        {
            var user = (TokenUser)HttpContext.Items["User"];

            if (!await _storageValidation.CanOpen(id, user.Id))
            {
                return(Ok(new byte[] { }));
            }
            var path = _pathGenerator.Generate(id);

            return(Ok(await _fileStorage.Get(path)));
        }
예제 #2
0
        public async Task <IActionResult> Post(string authorization, ReplyCreateParameters parameters)
        {
            var reply = await _replyService.Create(parameters);

            if (reply == null)
            {
                return(Ok(new ReplyCreateResult()));
            }

            if (parameters.Files != null)
            {
                reply.Files = new List <StorageViewResult>();

                foreach (var item in parameters.Files)
                {
                    item.TicketId = reply.TicketId;
                    var file = await _storageService.Create(reply.Id, item);

                    var path = _pathGenerator.Generate(file.Id);
                    await _fileStorage.Save(path, item.Bytes);

                    reply.Files.Add(file);
                }
            }
            return(Ok(reply));
        }
        public async Task <ActionResult> Post(string authorization, [FromBody] TicketCreateParameters parameter)
        {
            var ticket = await _ticketService.Create(parameter);

            if (ticket == null)
            {
                return(Ok(new TicketCreateResult()));
            }

            if (parameter.Files != null)
            {
                ticket.Files = new List <StorageViewResult>();
                foreach (var item in parameter.Files)
                {
                    item.TicketId = ticket.Id;
                    var file = await _storageService.Create(item);

                    var path = _pathGenerator.Generate(file.Id);
                    await _fileStorage.Save(path, item.Bytes);

                    ticket.Files.Add(file);
                }
            }
            return(Ok(ticket));
        }
예제 #4
0
        /// <summary>
        /// 保存文件,返回完整文件路径
        /// </summary>
        /// <param name="stream">文件流</param>
        /// <param name="fileName">文件名,包含扩展名</param>
        public string Save(byte[] stream, string fileName)
        {
            var path = _generator.Generate(fileName);

            stream.ToFile(path);
            return(path);
        }
예제 #5
0
        /// <summary>
        /// 保存文件,返回完整文件路径
        /// </summary>
        /// <param name="stream">文件流</param>
        /// <param name="fileName">文件名,包含扩展名</param>
        public string Save(byte[] stream, string fileName)
        {
            var path = _generator.Generate(fileName);

            using (new FileStream(path, FileMode.Create)) {
            }
            return(path);
        }
예제 #6
0
 /// <summary>
 /// 保存文件,返回完整文件路径 w
 /// </summary>
 public async Task<string> SaveAsync() {
     var fileControl = Web.GetFile();
     var path = _generator.Generate( fileControl.FileName );
     var physicalPath = Common.GetWebRootPath( path );
     var directory = Path.GetDirectoryName( physicalPath );
     if( string.IsNullOrEmpty( directory ) )
         throw new Warning( "上传失败" );
     if( Directory.Exists( directory ) == false )
         Directory.CreateDirectory( directory );
     using( var stream = new FileStream( physicalPath, FileMode.Create ) ) {
         await fileControl.CopyToAsync( stream );
     }
     return path;
 }
예제 #7
0
 public void TestGenerate()
 {
     Assert.Equal(@"c:\a.txt", _generator.Generate("a.txt"));
 }
예제 #8
0
 public void TestGenerate()
 {
     Assert.Equal(@"b/a-101112.txt", _generator.Generate("a.txt"));
 }
예제 #9
0
 public void TestGenerate_Extension(string fileName)
 {
     Assert.Equal(@"b/random-101112.txt", _generator.Generate(fileName));
 }