Отправка файла на веб-сайт с помощью Visual C#
В этой статье описывается, как отправить файл с помощью Microsoft Visual C#.
Исходная версия продукта: Visual C#, ASP.NET, службы IIS
Оригинальный номер базы знаний: 816150
Введение
В этой пошаговой статье описывается, как отправить существующий файл образа с локального жесткого диска на веб-сайт. Элемент управления Ввод используется для отправки изображения с локального компьютера. Этот отправляемый файл проверяется на сервере, чтобы убедиться, что вы не перезаписываете существующий файл, который уже был отправлен. Отправленный файл проверяется, если он существует на сервере. В этой статье для реализации функциональных возможностей используется EncType
атрибут формы.
Требования
В этой статье предполагается, что вы знакомы со следующими разделами:
- Веб-приложения
- ASP.NET
В следующем списке описана рекомендуемая инфраструктура программного обеспечения и сети, которые вам нужны.
- Visual C# .NET или Visual C#
- Службы IIS
Создание веб-формы ASP.NET
Запустите Visual Studio .NET или Visual Studio.
В меню Файл выберите пункт Создать и затем пункт Проект.
Примечание.
В Visual Studio наведите указатель мыши на пункт Создать в меню Файл , а затем выберите веб-сайт.
В разделе Типы проектов щелкните Проекты Visual C#. В разделе Шаблоны щелкните ASP.NET веб-приложение.
Примечание.
В Visual Studio выберите Visual C# справа от области Язык. В разделе Шаблоны щелкните ASP.NET веб-сайт.
В поле Расположение введите следующее расположение и нажмите кнопку ОК:
http://WebServerName/ApplicationName
Примечание.
WebServerName — это заполнитель для имени веб-сервера. ApplicationName — это заполнитель для имени приложения.
По умолчанию создается WebForm1.aspx .
Примечание.
В Visual Studio выберите HTTP справа от области Расположение, а затем введите
<http://WebServerName>
.В меню Вид выберите источник HTML.
Примечание.
В Visual Studio щелкните Код в меню Вид .
Изменение атрибутов формы
В окне HTMLWebForm1 замените тег формы следующим:
<form id="Form1" method="post" runat="server" EncType="multipart/form-data" action="WebForm1.aspx">
Атрибут EncType
задает формат публикуемых данных. Браузер использует этот атрибут для кодирования сведений, которые передаются на сервер. Атрибут действия в этом коде указывает, что страница будет обрабатывать запрос. По умолчанию атрибут метода формы имеет значение post, чтобы можно было отправлять большие объемы данных в транзакцию.
Добавьте элемент управления Вход, чтобы указать файл, который нужно передать на сервер.
В окне HTMLWebForm1 добавьте следующий код между открывающим и закрывающим
<form>
тегами:<INPUT id="oFile" type="file" runat="server" NAME="oFile">
Этот элемент управления Input указывает файл, который требуется передать на сервер.
Вы можете добавить текстовую строку перед элементом управления, чтобы предложить пользователю. Введите следующий текст перед элементом управления Вход в окне HTMLWebForm1:
Выберите файл изображения для отправки на сервер:
Добавление элемента управления Button
В окне HTMLWebForm1 добавьте следующий код между открывающим и закрывающим
<form>
тегами после кода элемента управления Input:<asp:button id="btnUpload" type="submit" text="Upload" runat="server"></asp:button>
Этот элемент управления Кнопка используется для отправки файла, указанного в элементе управления Вход.
Создание элемента управления Panel, содержащего одну метку для отображения выходных данных
В окне HTMLWebForm1 добавьте следующий код между открывающим и закрывающим <form>
тегами после кода элемента управления Button:
<asp:Panel ID="frmConfirmation" Visible="False" Runat="server">
<asp:Label id="lblUploadResult" Runat="server"></asp:Label>
</asp:Panel>
Этот код используется для отображения сообщения, указывающее, успешно ли отправлен файл. Для отображения этих выходных данных создается элемент управления Panel, содержащий одну метку.
Отправка файла в событие Нажатие кнопки
Код в этом разделе извлекает файл из локальной файловой системы, проверяет, существует ли файл на сервере, а затем передает его на веб-сайт. Чтобы добавить этот код, выполните следующие действия.
Дважды щелкните кнопку Отправить , созданную в разделе Добавление элемента управления Button этой статьи, чтобы создать обработчик событий для
Click
события элемента управления кнопка.Добавьте следующий код в верхней части окна Код :
using System.IO;
Добавьте следующий код в
Click
обработчик событий для кнопки Отправить :string strFileName; string strFilePath; string strFolder; strFolder = Server.MapPath("./"); // Retrieve the name of the file that is posted. strFileName = oFile.PostedFile.FileName; strFileName = Path.GetFileName(strFileName); if(oFile.Value != "") { // Create the folder if it does not exist. if(!Directory.Exists(strFolder)) { Directory.CreateDirectory(strFolder); } // Save the uploaded file to the server. strFilePath = strFolder + strFileName; if(File.Exists(strFilePath)) { lblUploadResult.Text = strFileName + " already exists on the server!"; } else { oFile.PostedFile.SaveAs(strFilePath); lblUploadResult.Text = strFileName + " has been successfully uploaded."; } } else { lblUploadResult.Text = "Click 'Browse' to select the file to upload."; } // Display the result of the upload. frmConfirmation.Visible = true;
В меню Файл выберите команду Сохранить все.
Убедитесь, что действие отправки работает
В меню Отладка щелкните Пуск , чтобы выполнить сборку и запустить приложение. Появится текстовое поле и кнопка команды.
Введите путь к файлу изображения в текстовом поле или нажмите кнопку Обзор , чтобы найти файл изображения на локальном компьютере.
Нажмите кнопку Отправить , чтобы отправить файл на сервер. Если файл уникален, вы получите сообщение о том, что отправка выполнена успешно. Если файл уже существует на сервере, вы получите соответствующее сообщение. Файлы, отправляемые из этого приложения, сохраняются в расположении:
C:\inetpub\wwwroot\ApplicationName
на локальном жестком диске.Чтобы приложение работало в платформа .NET Framework, разрешите пользователю ASPNETполный доступ. Для этого выполните следующие действия:
Найдите папку приложения в Windows Обозреватель. Путь —
C:\inetpub\wwwroot\ApplicationName
.Щелкните правой кнопкой мыши папку ApplicationName и выберите пункт Свойства. Откроется диалоговое окно Свойства ApplicationName .
Щелкните вкладку Безопасность.
Нажмите кнопку Добавить. Откроется диалоговое окно Выбор пользователей или групп .
Примечание.
В Visual Studio откроется диалоговое окно Выбор пользователей, компьютеров или групп .
Введите ASPNET в поле Введите имена объектов для выбора и нажмите кнопку ОК.
В диалоговом окне Свойства ApplicationName выберите пользователя ASPNET в списке Группы или имена пользователей .
В разделе Разрешить выберите поле Полный доступ проверка и нажмите кнопку ОК.
Полный список кода
WebForm1.aspx
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="Howto.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>WebForm1</title> <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server" EncType="multipart/form-data" action="WebForm1.aspx"> Image file to upload to the server: <INPUT id="oFile" type="file" runat="server" NAME="oFile"> <asp:button id="btnUpload" type="submit" text="Upload" runat="server"></asp:button> <asp:Panel ID="frmConfirmation" Visible="False" Runat="server"> <asp:Label id="lblUploadResult" Runat="server"></asp:Label> </asp:Panel> </form> </body> </HTML>
WebForm1.aspx.cs
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.IO; namespace **ApplicationName** { /// <summary> /// Summary description for WebForm1. /// </summary> public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.Button btnUpload; protected System.Web.UI.WebControls.Label lblUploadResult; protected System.Web.UI.WebControls.Panel frmConfirmation; protected System.Web.UI.HtmlControls.HtmlInputFile oFile; private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // CODEGEN: This call is required by the ASP.NET Web Form Designer. InitializeComponent(); base.OnInit(e); } /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.btnUpload.Click += new System.EventHandler(this.btnUpload_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void btnUpload_Click(object sender, System.EventArgs e) { string strFileName; string strFilePath; string strFolder; strFolder = Server.MapPath("./"); // Get the name of the file that is posted. strFileName = oFile.PostedFile.FileName; strFileName = Path.GetFileName(strFileName); if(oFile.Value != "") { // Create the directory if it does not exist. if(!Directory.Exists(strFolder)) { Directory.CreateDirectory(strFolder); } // Save the uploaded file to the server. strFilePath = strFolder + strFileName; if(File.Exists(strFilePath)) { lblUploadResult.Text = strFileName + " already exists on the server!"; } else { oFile.PostedFile.SaveAs(strFilePath); lblUploadResult.Text = strFileName + " has been successfully uploaded."; } } else { lblUploadResult.Text = "Click 'Browse' to select the file to upload."; } // Display the result of the upload. frmConfirmation.Visible = true; } }
Примечание.
Код, созданный в Visual Studio, отличается от кода, созданного в Visual Studio .NET.
Устранение неполадок
- Откройте файлMachine.config , расположенный на компьютере, в папке CONFIG по пути, по которому была установлена среда выполнения.
<processModel>
Найдите раздел в файле Machine.config, изменитеuser
атрибуты иpassword
на имя и пароль пользователя, с которым вы хотите W3wp.exe или Aspnet_wp.exe, а затем сохраните файлMachine.config.- Найдите папку Временные файлы ASP.NET , расположенную в папке CONFIG . Щелкните правой кнопкой мыши папку Временные файлы ASP.NET и выберите пункт Свойства.
- В диалоговом окне Свойства временных файлов ASP.NET перейдите на вкладку Безопасность .
- Нажмите кнопку Дополнительно.
- В диалоговом окне Параметры контроль доступа для временных файлов ASP.NET нажмите кнопку Добавить.
- В диалоговом окне введите имя пользователя в поле Имя и нажмите кнопку ОК.
- В диалоговом окне Запись разрешений для временных файлов ASP.NET предоставьте пользователю полные разрешения и нажмите кнопку ОК , чтобы закрыть диалоговое окно Свойства временных файлов ASP.NET .
Ссылки
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по