C# 如何在编辑页面ASP.NET MVC中为HttpPostedFileBase创建输入类型文件?

C# 如何在编辑页面ASP.NET MVC中为HttpPostedFileBase创建输入类型文件?,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我在开发MVC应用程序时遇到了一个问题 我从用于视图的简单模型开始,如: public class MyModel { public HttpPostedFileBase[] Files { get; set; } public string Name { get; set; } } 我有一个视图(Create.aspx) 我的问题:如何创建HttpPostedFileBase对象以发送给查看和显示它们(请参见下面的编辑页面) 这些文件以nvarchar的形式存储在数据库中

我在开发MVC应用程序时遇到了一个问题

我从用于视图的简单模型开始,如:

public class MyModel 
{
    public HttpPostedFileBase[] Files { get; set; }

    public string Name { get; set; }
}
我有一个视图(Create.aspx)

我的问题:如何创建HttpPostedFileBase对象以发送给查看和显示它们(请参见下面的编辑页面)

这些文件以nvarchar的形式存储在数据库中,并具有到它们的相对路径(作为标签)

我想保留已保存的文件,只需更改名称字段

我从数据库接收到一个对象,该对象存储文件路径、文件类型和文件流

对于编辑aspx页面:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyModel>" %>
...
    <form method="post" action="/My/Edit" enctype = "multipart/form-data">
        <input type="file" name="Files" />
        /* display here the files */
        ...
        <%:Html.TextBoxFor(item=>item.Name) %>
        <input type="submit" value="Create" />
    </form>

...
/*在这里显示文件*/
...
项目名称)%>

您无法使用
HttpPostedFileBase
显示文件。 正如它的描述所说:

用作提供对客户端上载的单个文件的访问权限的类的基类。


它用于访问正在上载的文件。如果要显示已上载的文件,则必须使用其他方法,如使用文件方法

您不能使用
HttpPostedFileBase
显示文件。 正如它的描述所说:

用作提供对客户端上载的单个文件的访问权限的类的基类。


它用于访问正在上载的文件。如果要显示已上载的文件,则必须使用其他方法,如使用文件方法

您可以使用如下示例所示的代码在视图中显示文件:

    public FileContentResult ViewImage(/*parameters*/)
    {
        byte[] img = //TODO: take your image as byte array
        return new FileContentResult(img, "image/jpeg");
    }
在您的
视图中

<img src="@Url.Action("ViewImage", "ControllerName", new { @*parameters*@ })">

您可以使用如下示例所示的代码在视图中显示文件:

    public FileContentResult ViewImage(/*parameters*/)
    {
        byte[] img = //TODO: take your image as byte array
        return new FileContentResult(img, "image/jpeg");
    }
在您的
视图中

<img src="@Url.Action("ViewImage", "ControllerName", new { @*parameters*@ })">

<p>Please specify an image file: <input type="file" name="datafile" id="datafile" size="40"></p>
<div id="preview"><img height="240" /></div>
$(function() {
   $('#datafile').change(function(e)
       {
           e.preventDefault();
           var f = e.target.files[0];
           if(f && window.FileReader)
           {
               var reader = new FileReader();
               reader.onload = function(evt) { $('#preview>img').attr('src', evt.target.result); };
               reader.readAsDataURL(f);
           }
       }
   );
});