示例#1
0
        public Media GetMediaInstance(IFormFile mediaFile, int userId)
        {
            byte[] fileBytes;
            using (var stream = new MemoryStream())
            {
                mediaFile.CopyTo(stream);
                fileBytes = stream.ToArray();
            }

            var saveDirectory = ServerHelper.MapPath(ApplicationConfig.MediaDirectory, true);
            var fileName      = SafeWriteBytesToFile(mediaFile.FileName, saveDirectory, fileBytes);

            //file extension and it's type
            var fileExtension = _localFileProvider.GetExtension(mediaFile.FileName);

            if (!string.IsNullOrEmpty(fileExtension))
            {
                fileExtension = fileExtension.ToLowerInvariant();
            }

            var contentType = mediaFile.ContentType;

            //an image?
            if (string.IsNullOrEmpty(contentType))
            {
                contentType = PictureUtility.GetContentType(fileExtension);
            }
            //no? a video?
            if (string.IsNullOrEmpty(contentType))
            {
                contentType = VideoUtility.GetContentType(fileExtension);
            }
            //no? let it be default one then
            if (string.IsNullOrEmpty(contentType))
            {
                contentType = "application/octet-stream";
            }
            var media = new Media()
            {
                MimeType        = contentType,
                UserId          = userId,
                Name            = mediaFile.FileName,
                CreatedOn       = DateTime.UtcNow,
                SystemName      = fileName,
                AlternativeText = mediaFile.FileName
            };

            media.ThumbnailPath = GetPictureUrl(media, 150, 150, true);
            media.LocalPath     = GetPictureUrl(media, 0, 0, true);
            return(media);
        }
示例#2
0
        public IActionResult UploadFile(UploadFileModel uploadFileModel)
        {
            if (uploadFileModel.ProductId < 1)
            {
                return(NotFound());
            }
            var product = _productService.Get(uploadFileModel.ProductId);

            if (!product.IsPublic() && !CurrentUser.Can(CapabilitySystemNames.EditProduct))
            {
                return(NotFound());
            }

            if (product.ProductAttributes.All(x => x.InputFieldType != InputFieldType.FileUpload))
            {
                return(R.Fail.With("error", T("The product doesn't accept any uploads")).Result);
            }

            //guest signin if user is not signed in
            ApplicationEngine.GuestSignIn();
            var fileBytes = uploadFileModel.MediaFile.GetBytesAsync().Result;
            var upload    = new Upload()
            {
                UserId        = CurrentUser.Id,
                FileBytes     = fileBytes,
                FileType      = uploadFileModel.MediaFile.ContentType,
                FileExtension = _localFileProvider.GetExtension(uploadFileModel.MediaFile.FileName),
                Guid          = Guid.NewGuid().ToString()
            };

            _uploadService.Insert(upload);
            var downloadUrl = ApplicationEngine.RouteUrl(RouteNames.DownloadUploadFile, new { guid = upload.Guid });

            return(R.Success.With("guid", upload.Guid).With("url", downloadUrl).Result);
        }