在剃刀文件中接收多部分文件数据

时间:2014-04-17 06:43:04

标签: c# asp.net razor

我必须创建一个剃刀文件,它接收多部分文件数据并将其保存到特定位置。 我之前在.ashx文件中做过这个。喜欢这个

    <%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;

public class Handler : IHttpHandler {

public void ProcessRequest (HttpContext context) {
    context.Response.ContentType = "text/plain";
    if (context.Request.Files.Count > 0) 
    {
        for (int i = 0; i < context.Request.Files.Count; i++)
        {
            string fileNamePath = System.IO.Path.GetFileNameWithoutExtension(context.Request.Files[i].FileName) + "_" + System.Guid.NewGuid().ToString("N") + System.IO.Path.GetExtension(context.Request.Files[i].FileName);
            string savePath = context.Server.MapPath("~/media/mm-signup-files/") + fileNamePath;
            context.Request.Files[i].SaveAs(savePath);

            context.Response.Write(fileNamePath + "|" + System.IO.Path.GetFileName(context.Request.Files[i].FileName));


        }

    }

}

public bool IsReusable {
    get {
        return false;
    }
}

}

但是现在我想在剃刀文件中实现此代码。是否有可能成为剃刀? 我无法理解如何在没有实现HttpContext接口的剃刀文件中获取IHttpHandler。或者我错过了什么?

2 个答案:

答案 0 :(得分:1)

HttpContext是Razor WebPage的一个属性,因此您可以本机访问Response和Request:

@{
    if (Request.Files.Count > 0) 
    {
        for (int i = 0; i < Request.Files.Count; i++)
        {
            string fileNamePath = Path.GetFileNameWithoutExtension(Request.Files[i].FileName) + "_" + Guid.NewGuid().ToString("N") + Path.GetExtension(Request.Files[i].FileName);
            string savePath = Server.MapPath("~/media/mm-signup-files/") + fileNamePath;
            Request.Files[i].SaveAs(savePath);
            Response.Write(fileNamePath + "|" + Path.GetFileName(Request.Files[i].FileName));

        }
    }
}

答案 1 :(得分:1)

您可以在控制器的操作中访问请求对象,也可以在View中访问Request对象,它始终可以访问。