public async Task <IEnumerable <File> > Upload(uint?id = null)
        {
            var files = new List <File>();
            var infos = await _accessor.Write(this.Request,
                                              this.DataService.GetDirectory(id),
                                              args => args.FileName = (DateTime.Now - EPOCH).Days.ToString() + "-" + Zongsoft.Common.Randomizer.GenerateString());

            foreach (var info in infos)
            {
                if (info == null || !info.IsFile)
                {
                    continue;
                }

                object name = null;

                if (info.HasProperties && !info.Properties.TryGetValue("FileName", out name))
                {
                    info.Properties.TryGetValue("DispositionName", out name);
                }

                if (string.IsNullOrWhiteSpace(name as string))
                {
                    name = info.Name;
                }

                var attachment = Zongsoft.Data.Model.Build <File>(file =>
                {
                    file.FolderId = id.HasValue ? id.Value : 0;
                    file.Name     = info.Name;
                    file.Path     = info.Path.Url;
                    file.Type     = info.Type;
                    file.Size     = (uint)Math.Max(0, info.Size);
                });

                if (this.DataService.Insert(attachment) > 0)
                {
                    files.Add(attachment);
                }
                else
                {
                    await _accessor.Delete(info.Path.FullPath);
                }
            }

            return(files);
        }
Пример #2
0
 /// <summary>
 /// 上传一个文件或多个文件。
 /// </summary>
 /// <param name="directory">指定上传文件的目录路径(绝对路径以/斜杠打头)。</param>
 /// <returns>返回上传成功的<see cref="Zongsoft.IO.FileInfo"/>文件描述信息实体对象集。</returns>
 public Task <IEnumerable <Zongsoft.IO.FileInfo> > Post(string directory = null)
 {
     return(_accessor.Write(this.Request, directory));
 }