Загрузка изображений Использование MVC WebApi в папке проекта, развернутой на AWS - PullRequest
0 голосов
/ 06 октября 2018

Я создал образец веб-API для загрузки изображения в виде составной части на сервер внутри папки проекта (например, папка с именем "uploadfiles" ).Это прекрасно работает на локальном хосте, но когда я развернул его на AWS Elastic Beanstalk, он не работает.

Вот мой код ..

private static Logger logger = LogManager.GetCurrentClassLogger();

    [Route("PostUserImage")]
    [AllowAnonymous]
    public async Task<HttpResponseMessage> PostUserImage()
    {
        Dictionary<string, object> dict = new Dictionary<string, object>();
        try
        {
            logger.Info("step 1");
            var httpRequest = HttpContext.Current.Request;

            foreach (string file in httpRequest.Files)
            {
                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created);

                var postedFile = httpRequest.Files[file];
                if (postedFile != null && postedFile.ContentLength > 0)
                {

                    int MaxContentLength = 1024 * 1024 * 1; //Size = 1 MB  

                    IList<string> AllowedFileExtensions = new List<string> { ".jpg", ".gif", ".png" };
                    var ext = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf('.'));
                    var extension = ext.ToLower();
                    if (!AllowedFileExtensions.Contains(extension))
                    {

                        var message = string.Format("Please Upload image of type .jpg,.gif,.png.");
                        logger.Info("step 2");
                        dict.Add("error", message);
                        return Request.CreateResponse(HttpStatusCode.BadRequest, dict);
                    }
                    else if (postedFile.ContentLength > MaxContentLength)
                    {
                        logger.Info("step 3");
                        var message = string.Format("Please Upload a file upto 1 mb.");

                        dict.Add("error", message);
                        return Request.CreateResponse(HttpStatusCode.BadRequest, dict);
                    }
                    else
                    {
                        var filePath = HttpContext.Current.Server.MapPath("~/uploadFiles/" + postedFile.FileName + extension);
                        logger.Info("step 5");
                        postedFile.SaveAs(filePath);

                    }
                }

                var message1 = string.Format("Image Updated Successfully.");
                return Request.CreateErrorResponse(HttpStatusCode.Created, message1); ;
            }
            logger.Info("step 6");
            var res = string.Format("Please Upload a image.");
            dict.Add("error", res);
            return Request.CreateResponse(HttpStatusCode.NotFound, dict);
        }
        catch (Exception ex)
        {
            logger.Info("step 7");
            var res = string.Format("some Message");
            dict.Add("error", res);
            return Request.CreateResponse(HttpStatusCode.NotFound, dict);
        }
    }

Это не происходит внутри цикла foreach.

Вот изображение ошибки на почтальоне: Изображение ошибки на почтальоне

Должен ли я использовать AWS S3 Storage, и это мой последний вариант, потому что я хочу знатьэто невозможно без использования S3 Bucket.

Я не знаю, должен ли я дать разрешение на папку, как мы даем на GoDaddy или IIS.Пожалуйста, помогите мне

...