Пример #1
0
        public OperationResultWithData <ScoContentDto> UploadFile(string folderScoId, IFormFile file)
        {
            // TRICK:
            var    form       = this.ControllerContext.HttpContext.Request.Form;
            string sessionKey = form["session"];

            Session = GetReadOnlySession(Guid.Parse(sessionKey));
            if (Session == null)
            {
                return(OperationResultWithData <ScoContentDto> .Error(Messages.SessionTimeOut));
            }
            LmsCompany = Session.LmsCompany;

            // TODO: check user is teacher + feature is enabled

            string name        = form["name"];
            string description = form["description"];
            string customUrl   = form["customUrl"];

            try
            {
                string fileName = file.FileName;

                var           ac     = this.GetUserProvider();
                var           helper = new ContentEditControllerHelper(Logger, ac);
                int           fileSize;
                ScoInfoResult createdFile = helper.UploadFile(folderScoId, name, description, customUrl, fileName, file.ContentType, file.OpenReadStream(), out fileSize);

                var sco = ac.GetScoContent(createdFile.ScoInfo.ScoId);
                var dto = new ScoContentDtoMapper().Map(sco.ScoContent);
                //TRICK:
                dto.ByteCount = fileSize;

                return(dto.ToSuccessResult());
            }
            catch (Exception ex)
            {
                IUserMessageException userError = ex as IUserMessageException;
                if (userError != null)
                {
                    return(OperationResultWithData <ScoContentDto> .Error(ex.Message));
                }

                throw;
            }
        }
Пример #2
0
        public async Task <HttpResponseMessage> UploadFile(string folderScoId)
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            var provider = new MultipartFormDataMemoryStreamProvider();
            await Request.Content.ReadAsMultipartAsync(provider);

            string name        = provider.FormData["name"];
            string description = provider.FormData["description"];
            string customUrl   = provider.FormData["customUrl"];

            if (!provider.FileStreams.Any())
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);

                //return Content(HttpStatusCode.BadRequest, "No file uploaded");
            }
            if (provider.FileStreams.Count != 1)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
                //return Content(HttpStatusCode.BadRequest, "Single file expected");
            }

            try
            {
                string fileName = provider.FileStreams.First().Key;
                MultipartFormDataMemoryStreamProvider.FileContent stream = provider.FileStreams.First().Value;

                var           ac             = this.GetUserProvider();
                var           contentService = new ContentService(Logger, ac);
                var           helper         = new ContentEditControllerHelper(Logger, ac);
                int           fileSize;
                ScoInfoResult createdFile = helper.UploadFile(folderScoId, name, description, customUrl, fileName, stream.ContentType, stream.Stream, out fileSize);

                var sco = ac.GetScoContent(createdFile.ScoInfo.ScoId);
                var dto = new ScoContentDtoMapper().Map(sco.ScoContent);
                //TRICK:
                dto.ByteCount = fileSize;

                string output   = JsonSerializer.JsonSerialize(dto.ToSuccessResult());
                var    response = new HttpResponseMessage();
                response.Content = new StringContent(output);
                response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
                return(response);
            }
            catch (Exception ex)
            {
                IUserMessageException userError = ex as IUserMessageException;
                if (userError != null)
                {
                    string output = JsonSerializer.JsonSerialize(OperationResultWithData <ScoContentDto> .Error(ex.Message));
                    //JsonConvert.SerializeObject(OperationResultWithData<ScoContentDto>.Error(ex.Message));
                    var response = new HttpResponseMessage();
                    response.Content = new StringContent(output);
                    response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
                    return(response);
                }

                throw;
            }
        }