예제 #1
0
        // public async Task<NewMediaResult> TryUploadMedias(List<BaseObject> medias)
        // {
        //     foreach (var media in medias) {
        //         var error = await UploadMedia(media);
        //         if (error.Error) {
        //             return error;
        //         }
        //     }

        //     return new NewMediaResult() {
        //         Error = false,
        //         Medias = medias
        //     };
        // }

        public async Task <NewMediaResult> UploadMedia(BaseObject media)
        {
            if (media is Create createMedia)
            {
                if (createMedia.obj.attachment != null && createMedia.obj.attachment.items != null && createMedia.obj.attachment.items.Count > 0)
                {
                    foreach (var attch in createMedia.obj.attachment.items)
                    {
                        if (attch is Document doc)
                        {
                            var attchModel = new ArchivedMediaModel
                            {
                                MediaType = (CommonMediaType)Enum.Parse(typeof(CommonMediaType), doc.type),
                                SizeBytes = 0,
                                UserId    = media.UserId.Value,
                            };
                            _dbContext.ArchivedMedia.Add(attchModel);
                            await _dbContext.SaveChangesAsync();

                            using (var newStream = File.Create(LocalPath(attchModel)))
                            {
                                using (var oldStream = new FileStream(doc.url.content, FileMode.Open, FileAccess.Read, FileShare.Read))
                                {
                                    await oldStream.CopyToAsync(newStream);
                                }
                                File.Delete(doc.url.content);
                            }

                            attchModel.UploadedStatus = true;
                            await _dbContext.SaveChangesAsync();
                        }
                    }
                }
            }
            media.published = DateTime.UtcNow;

            return(new NewMediaResult()
            {
                Error = false,
                Medias = new List <BaseObject>()
                {
                    media
                }
            });
        }
예제 #2
0
 public Task <BaseObject> Transform(ArchivedMediaModel archivedMediaModel)
 {
     throw new NotImplementedException();
 }
예제 #3
0
 public string LocalPath(ArchivedMediaModel media) => _env.ContentRootPath + $"/Upload/Archive/{media.UserId}-{media.Id}";