Я создал образец веб-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.Пожалуйста, помогите мне