Как загрузить файл в папку онлайн без получения «Доступ к пути запрещен» - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь загрузить файл изображения в свое веб-приложение онлайн. Вот как я загружаю файл изображений онлайн.

if (!FileUploadPropertyImage.HasFile)
{
    Skin.AddModuleMessage(this, Localization.GetString("NoFileFound.ErrorMessage", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError);
    return;
}

string PictureFileTypeAccepted = "jpg,png,gif";

if (FileUploadPropertyImage.PostedFile.ContentLength <= maxFileSize * 1024)
{
    string fileName = FileUploadPropertyImage.FileName.ToLower();
    string extension = Path.GetExtension(fileName);
    if (PictureFileTypeAccepted.Contains(extension.ToLower()))
    {
        System.Drawing.Bitmap objBmp = new System.Drawing.Bitmap(FileUploadPropertyImage.PostedFile.InputStream, false);

        int imageWidth = objBmp.Width;
        int imageHeight = objBmp.Height;
        int minWidth = 1100;
        int minHeight = 400;

        if (imageWidth <= 2000 && imageHeight <= 800 && (imageWidth > minWidth && imageHeight > minHeight))
        {
            var mapPath = Server.MapPath($"\\Portals\\0\\Images\\WebGeneralPropertiesFolder\\");

            var fileSavePath = new DirectoryInfo(mapPath).FullName;

            hiddenFieldPropertyImageUrl.Value = fileSavePath + "//" + FileUploadPropertyImage.FileName;
            FileUploadPropertyImage.PostedFile.SaveAs(hiddenFieldPropertyImageUrl.Value);

           hiddenFieldPropertImageName.Value =  FileUploadPropertyImage.FileName;

        }
        else
        {
            var wrongFileDimension = Localization.GetString("WrongFileDimension", LocalResourceFile);
            wrongFileDimension = wrongFileDimension.Replace("#Height#", pictureHeight.ToString());
            wrongFileDimension = wrongFileDimension.Replace("#Width#", pictureWidth.ToString());

            Skin.AddModuleMessage(this, wrongFileDimension, ModuleMessage.ModuleMessageType.RedError);
        }
    }
    else
    {
        Skin.AddModuleMessage(this, Localization.GetString("InvalidFileExtension.ErrorMessage", LocalResourceFile), ModuleMessage.ModuleMessageType.RedError);
    }
}
else
{
    Skin.AddModuleMessage(this, Localization.GetString("FileTooBig.ErrorMessage", LocalResourceFile),
        ModuleMessage.ModuleMessageType.RedError);
}

, но вместо этого получаю эти сообщения об ошибках.

(Ошибка: свойство в настоящее время недоступно. DotNetNuke.Services.Exceptions.ModuleLoadException : Доступ к пути 'C: \ inetpub \ wwwroot \ Portals \ 0 \ Images \ WebGeneralPropertiesFolder \ kansas-Image2.jpg' запрещен. ---> System.UnauthorizedAccessException: Доступ к пути 'C : \ inetpub \ wwwroot \ Portals \ 0 \ Images \ WebGeneralPropertiesFolder \ kansas-Image2.jpg 'запрещено. в System.IO .__ Error.WinIOError (Int32 errorCode, String MaybeFullPath) в System.IO.FileStream.Init (String путь, режим FileMode, доступ FileAccess, права Int32, логические useRights, общий ресурс FileShare, параметры типа3232 bufferSize, параметры FileOptions, SECURITY_ATTRIBUTES secAttrs, строка msgPath, логический bFromProxy, логический useLongPath, логический checkHost) в System.IO.Fileringream , Режим FileMode, доступ к FileAccess, общий доступ к FileShare, размер буфера Int32, параметры FileOptions, строка String msgPath, логическое значение bFr omProxy) в System.IO.FileStream..ctor (String path, FileMode mode) в System.Web.HttpPostedFile.SaveAs (String filename) в GeoscomTech.VenueHub.Property.View.UploadPropertyImage () в C: \ MyProjects \ www.venuehub.local.ng \ DesktopModules \ Property \ View.ascx.cs: строка 1717 --- Конец трассировки стека внутренних исключений ---)

Я создаю свое приложение с помощью Dnn Content Management, ASP. Net и C# язык. Я размещаю приложение на веб-сервисах Amazon. Используя MS SQL и IIS, в IIS я дал полное разрешение iis Apppool \ DefaultApppool, Network Service, Administrator. Все еще не могу загрузить файл онлайн.

Это мой первый хостинг на AWS. Хотя я размещал такое приложение на других хостинг-провайдерах, и оно работало нормально.

Самое смешное, что оно отлично работает на моем локальном сервере. Буду признателен за обратную связь, спасибо.

1 Ответ

0 голосов
/ 07 февраля 2020

Вы уверены, что каталог, в который вы загружаете изображение, существует? "C: \ inetpub \ wwwroot \ Portals \ 0 \ Images \ WebGeneralPropertiesFolder"

Лучше всего убедиться в этом перед использованием метода SaveAs

if (!Directory.Exists(fileSavePath ))
    Directory.CreateDirectory(fileSavePath);
...