Как загрузить файлы на другой порт в сети?

#c# #asp.net #.net #webforms

Вопрос:

Есть порт с IP-адресом, который есть 192.168.0.36 . Это сервер, на котором будут храниться файлы, загруженные в веб-приложение, но я впервые пытаюсь сделать что-то подобное, поэтому я много чего перепробовал, чтобы иметь возможность хранить файлы на этом сервере, но когда он отправил файл, приложение выдало следующую ошибку:

Исключение во время запроса веб-клиента

Поэтому я открыл меню ошибок Visual Studio, чтобы узнать больше, и там есть сообщение, в котором говорится:

InnerException = {«Не удалось найти файл ‘C: Program Files (x86) IIS Express download.png’. «:» C: Program Files (x86) IIS Express download.png «}

Bt почему возникает эта ошибка, если я не получаю доступ к разделу C:

Это мой код:

 <asp:FileUpload runat="server" ID="file_foto" CssClass="file-foto-pf" Style="display: none;" accept="image/*" />

protected void actualizar_foto(object sender, EventArgs e)
{
    try
    {
        if (file_foto.HasFile)
        {
            string Id_Usuario = Request.QueryString["Id_Usuario"].ToString();
            string serverName = @"\192.168.0.36\E:\INTRANET\";
            string folder = "PRUE\";
            string fileName = Path.GetFileName(file_foto.FileName)
            // Upload to Hosted Server.
            WebClient webClient = new WebClient();
            Uri uri = new Uri(serverName   folder   fileName);
            webClient.UploadFile(uri, "POST", fileName)
            DCL.Int_Usuarios obj = new DCL.Int_Usuarios();
            obj.Anexo_Foto = uri.ToString();
            obj.Id_Usuario = Convert.ToInt32(Id_Usuario);
            Int_Usuarios_BRL.InsertOrUpdate(obj, 45);
        }
        Page.Response.Redirect(Page.Request.Url.ToString(), true);
    }
    catch (Exception ex)
    {
        Console.Write(ex);
    }
}
 

Комментарии:

1. имеет ли ваш сервер с кодом веб — сайта прямое использование папок файлов на этом другом сервере? Вы не можете для тестирования ввести файл:// — так как для вашего браузера это означает, что вы используете свои локальные файлы — а не с веб-сервера. Если пользователь загружает файл на веб-сервер, вы можете сохранить его как в своем коде, используя путь к файлу Windows plane jane, а не URL-адрес.

2. ну, мои файлы сохранены на другом сервере

3. Используете ли вы FTP или https или какие-либо другие средства для сохранения на этом другом сервере, или текущий запущенный веб-сайт имеет прямые права и использует файловую систему? это означало бы, что текущий веб-сайт и URL-адрес не совпадают и не сопоставляются со 2-м сервером, но затем вы можете сделать одно из двух: создать виртуальные папки для сопоставления с этим сервером (это означает, что существуют допустимые URL-адреса для папок на 2-м сервере). Или используйте код для сохранения и отправки/отправки данного файла конечному пользователю. Этот 2 — й выбор гораздо более безопасен, так как действительные URL-адреса файлов никогда не существуют в виде URL-адресов, но может использоваться только код, который часто является хорошим

4. Так о чем я говорю? Часто веб-сайту требуется какая-то огромная папка с документами и т. Д., И они находятся не в тех же папках, что и веб-сервер. Таким образом, вы можете сопоставить создать виртуальную папку и указать ее на другой сервер. Таким образом, URL-адрес базовой папки теперь будет работать. Конечно, вы можете создавать эти виртуальные папки только в том случае, если два сервера находятся в одной сети. Но именно так вы делитесь документами и папками на веб-сайте. Это означает, что вам не нужно размещать все эти папки с файлами, изображениями и документами на реальном веб-сервере. и это также означает, что теперь действительный URL-адрес eixst.

5. Это настоящая боль-настроить виртуальную папку с помощью IIS express edition. С полным дополнением он встроен в пользовательский интерфейс. Из служб IIS просто откройте дерево папок, щелкните правой кнопкой мыши корневую папку, и вы увидите «Создать/добавить виртуальную папку». Для IIs EXPRESS? Вам необходимо отредактировать файл веб-конфигурации, так как у нас нет хороших модных IIS (интернет-сервисов). Пользовательский интерфейс, который делает это так просто.

Ответ №1:

Хотя я не уверен, что в этом проблема, вы могли бы сделать следующее:

 string serverName = @"file://192.168.0.36/E:/INTRANET/PRUE/";
string fileName = Path.GetFileName(file_foto.FileName);
Uri uri = new Uri(Path.Combine(serverName, fileName));
 

Дайте мне знать, если это вам поможет.

Комментарии:

1. Не могли бы вы попытаться зарегистрировать все значения, связанные с путем? Возможно, созданный uri содержит относительный путь или корневой путь IIS.

2. Если файлы, которые я собираюсь сохранить, будут из корневого пути IIS, вот почему, потому что IP-адрес, где он будет храниться