C# 如何在编辑页面ASP.NET MVC中为HttpPostedFileBase创建输入类型文件?
我在开发MVC应用程序时遇到了一个问题 我从用于视图的简单模型开始,如: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的形式存储在数据库中
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);
}
}
);
});