#c# #asp.net #http
#c# #asp.net #http
Вопрос:
Я успешно создал проект на C #, используя шаблон веб-сайта в Visual Studio 2015. Я изменил «Default.aspx», чтобы содержать:
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Upload" PostBackUrl=".upl"/>
Я также изменил Default.aspx.cs, чтобы он выглядел как:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Data/") FileUpload1.FileName);
}
}
}
Я использовал шаблон библиотеки классов для создания DLL / обработчика, чтобы перехватывать веб-запросы на загрузку файлов, как показано ниже:
using System;
using System.Web;
namespace WebRequestInterceptorModule
{
public class Class1 : IHttpHandler
{
public bool IsReusable
{
get
{
return false;
}
}
public void ProcessRequest(HttpContext context)
{
HttpRequest request = context.Request;
System.Collections.Specialized.NameValueCollection nvc = request.Params;
string test = "hello";
// Example #4: Append new text to an existing file.
// The using statement automatically flushes AND CLOSES the stream and calls
// IDisposable.Dispose on the stream object.
using (System.IO.StreamWriter file =
new System.IO.StreamWriter(@"C:UsersDining RoomDocumentsWriteLines2.txt", true))
{
file.WriteLine(test);
}
}
}
}
Я успешно зарегистрировал вышеупомянутый обработчик, изменив web.config следующим образом:
<system.webServer>
<modules>
<remove name="FormsAuthentication"/>
</modules>
<handlers>
<add name="mytest" verb="*" path=".upl" type="WebRequestInterceptorModule.Class1"/>
</handlers>
и я знаю, что обработчик действительно перехватывает запросы на загрузку, потому что я вижу, что файл «WriteLines» генерируется каждый раз, когда я выполняю загрузку.
Итак, подводя итог, загрузка файлов работает правильно, и я могу успешно перехватывать запросы на загрузку файлов с помощью обработчика / DLL.
Мой вопрос к сообществу: предположим, я хочу добавить пользовательский строковый атрибут вместе с загружаемым файлом (т. Е. Что-то вроде комментария «это важные заметки с прошлой недели»), как я могу это сделать?
Чтобы попытаться ответить на свой собственный вопрос, я попытался поместить точку останова в сам мой обработчик и отладить объект «request». Вот что я вижу:
Я вижу нечто, называемое «QueryString», которое оказывается пустой строкой («»). Возможно ли, что я могу поместить туда свой комментарий? Если да, то как мне нужно изменить Default.apsx, чтобы обновить строку запроса?
Комментарии:
1. Просто добавьте поле в свою форму
2. Вы можете добавлять любые поля, которые вам нравятся, в свою HTML-форму, которая может содержать любые данные, которые вам нравятся.
3. Не могли бы вы указать мне пример или образец кода, и я отмечу ваш ответ правильным
4. @user1068636: Любой учебник по ASP.NET собирается показать, как сделать форму.
5. проблема заключается в таких руководствах: support.microsoft.com/en-us/kb/323246#bookmark-5 они не показывают, как извлечь пользовательский атрибут файла. Они просто показывают базовые загрузки файлов, которые у меня уже работают