Как я могу добавить свои собственные атрибуты пользовательского файла в форму http, состоящую из нескольких частей, в asp.net Код на C #?

#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 они не показывают, как извлечь пользовательский атрибут файла. Они просто показывают базовые загрузки файлов, которые у меня уже работают