Как использовать размещенный файл через HttpHandler? - PullRequest
0 голосов
/ 23 сентября 2011

Я создал метод, который берет локальный файл и отправляет его на удаленный сайт, взятый из второго ответа здесь.

На удаленном сайте у меня есть HttpHandler, ноне знаю, где находятся байты файла, поэтому я могу сохранить его где-нибудь на удаленной машине.

Может кто-нибудь помочь мне с тем, как использовать этот файл в HttpHandler для обработки?Я пробовал ниже, но Request.Files пуст:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections.Specialized;

namespace Somewhere
{
    public class UploadFileHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            //VALIDATE FILES IN REQUEST
            if (context.Request.Files.Count > 0)
            {
                //HANDLE EACH FILE IN THE REQUEST
                foreach (HttpPostedFile item in context.Request.Files)
                {
                    item.SaveAs(context.Server.MapPath("~/Temp/" + item.FileName));
                    context.Response.Write("File uploaded");
                }
            }
            else
            {
                //NO FILES IN REQUEST TO HANDLE
                context.Response.Write("No file uploaded");
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

1 Ответ

0 голосов
/ 23 сентября 2011

Получите HttpRequest из контекста и используйте свойство Files, чтобы получить коллекцию объектов HttpPostedFile.Затем вы можете получить доступ к данным из HttpPostedFile.InputStream (есть другие свойства для имени, длины и типа MIME).

РЕДАКТИРОВАТЬ: Теперь, когда вопрос был отредактирован, чтобы показать, что вы 'я уже использую свойство Files, я сильно подозреваю, что вы просматриваете неправильный HTTP-запрос или что-то не так с тем, как вы делаете запрос.Я предлагаю вам использовать Wireshark , чтобы увидеть, что происходит на сетевом уровне - таким образом вы можете проверить, что ваш запрос действительно содержит данные файла.

...