Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存/检索图像。ASP.NETMVC_C#_Asp.net_Asp.net Mvc_Nhibernate - Fatal编程技术网

C# 保存/检索图像。ASP.NETMVC

C# 保存/检索图像。ASP.NETMVC,c#,asp.net,asp.net-mvc,nhibernate,C#,Asp.net,Asp.net Mvc,Nhibernate,我试图在视图上显示我以前加载的图像,但没有成功。 图片是上传的,这是肯定的。到目前为止,我写过这样的东西: @if(Model.AttachedInformation.Count > 0) { <div id="gallery"> @foreach(var path in Model.AttachedInformation) { <img src="@path" alt="default_descriptio

我试图在视图上显示我以前加载的图像,但没有成功。 图片是上传的,这是肯定的。到目前为止,我写过这样的东西:

@if(Model.AttachedInformation.Count > 0)
{
    <div id="gallery">
        @foreach(var path in Model.AttachedInformation)
        {
            <img src="@path" alt="default_description" title="some_title" />
        }
    </div>
}
模型

AbstractEntity保留版本和ID属性

[Serializable]
public class Employee : AbstractEntity<Employee>, IAggregateRoot
{
    public Employee()
    {
        this.AttachedInformation = new HashSet<String>();
    }

    public virtual String FirstName { get; set; }
    public virtual String MiddleName { get; set; }
    public virtual String LastName { get; set; }
    public virtual String SSN { get; set; }
    public virtual String EmployeeNumber { get; set; }
    public virtual String TradeUnionNumber { get; set; }
    public virtual String Department { get; set; }
    public virtual String Post { get; set; }
    public virtual DateTime DateOfHire { get; set; }
    public virtual DateTime DateOfBirth { get; set; }
    public virtual ICollection<String> AttachedInformation { get; set; }
}
原始HTML

赏金

我需要的是得到一个有插图的例子。谢谢

HttpContext.Server.MapPath("~/Content/Images/Uploads")
上面将给出磁盘上的完整路径,然后将其保存到员工记录中。您应该只保存文件名,然后将图像源化到~/Content/Images/Uploads/

另一个注意事项是,您正在按文件名将所有图像保存到同一目录中。如果两个用户上载同名文件,其中一个将覆盖另一个。每个员工都应该有自己的上传目录,或者您应该动态生成文件名

上面将给出磁盘上的完整路径,然后将其保存到员工记录中。您应该只保存文件名,然后将图像源化到~/Content/Images/Uploads/


另一个注意事项是,您正在按文件名将所有图像保存到同一目录中。如果两个用户上载同名文件,其中一个将覆盖另一个。每个员工都应该有自己的上传目录,或者您应该动态生成文件名。

确定。我找到了解决办法。也许它会对某些人有用

var directory = "/Content/Images/Uploads/" + employee.SSN;
var path = String.Empty;

if(!Directory.Exists(Server.MapPath(directory)))
{
    Directory.CreateDirectory(Server.MapPath(directory));
}

foreach(var file in files)
{
    if(null != file && file.ContentLength > 0)
    {
        path = Path.Combine(directory + "/", Path.GetFileName(file.FileName));
        file.SaveAs(Server.MapPath(path));
        employee.AttachedInformation.Add(path);
    }
}

这对我很有用。请更正。

好的。我找到了解决办法。也许它会对某些人有用

var directory = "/Content/Images/Uploads/" + employee.SSN;
var path = String.Empty;

if(!Directory.Exists(Server.MapPath(directory)))
{
    Directory.CreateDirectory(Server.MapPath(directory));
}

foreach(var file in files)
{
    if(null != file && file.ContentLength > 0)
    {
        path = Path.Combine(directory + "/", Path.GetFileName(file.FileName));
        file.SaveAs(Server.MapPath(path));
        employee.AttachedInformation.Add(path);
    }
}

这对我很有用。非常感谢您的更正。

是否真的像file:///路径那样保留完整的文件路径?或者路径在浏览器中实际工作吗?请提供该函数的HTML输出。。。或者,当您转到页面时,可能会出现一些错误?是否可以包括一个显示如何填充模型的控制器?是否可以显示渲染的原始html?而且,您是否检查了文件是否正确保存到上载目录?是否确实保留了完整的文件路径,如file:///path中所示?或者路径在浏览器中实际工作吗?请提供该函数的HTML输出。。。或者,当您转到页面时,可能会出现一些错误?是否可以包括一个显示如何填充模型的控制器?是否可以显示渲染的原始html?并且,您是否已检查文件是否正确保存到上载目录?同意!特别是关于覆盖。所以我可能会添加id作为路径的一部分,这样它将是唯一的!请举例说明您的~/Content/Images/Uploads/?为了防止大量子目录,我们还使用了GUID文件名,并保留了上载的文件名以供显示。这样,我们就有了唯一的存储文件名,但可以呈现用户上传的文件名,并在存储到磁盘时避免文件名的冲突。我的2美分:同意!特别是关于覆盖。所以我可能会添加id作为路径的一部分,这样它将是唯一的!请举例说明您的~/Content/Images/Uploads/?为了防止大量子目录,我们还使用了GUID文件名,并保留了上载的文件名以供显示。这样,我们就有了唯一的存储文件名,但可以呈现用户上传的文件名,并在存储到磁盘时避免文件名的冲突。我的2美分:SSN不是唯一的。。。此外,它们的SSN将位于每个代理服务器文件夹中。不安全。如果您必须使用SSN,那么至少要将其散列为一些如何创建随机字符串OK,谢谢!看见Id的使用很复杂,因为它是在实体保存到存储库时生成的。不,我的意思是计算单向哈希以将SSN转换为其他内容。。SSN不是唯一的。。。此外,它们的SSN将位于每个代理服务器文件夹中。不安全。如果您必须使用SSN,那么至少要将其散列为一些如何创建随机字符串OK,谢谢!看见Id的使用很复杂,因为它是在实体保存到存储库时生成的。不,我的意思是计算单向哈希以将SSN转换为其他内容。。
HttpContext.Server.MapPath("~/Content/Images/Uploads")
var directory = "/Content/Images/Uploads/" + employee.SSN;
var path = String.Empty;

if(!Directory.Exists(Server.MapPath(directory)))
{
    Directory.CreateDirectory(Server.MapPath(directory));
}

foreach(var file in files)
{
    if(null != file && file.ContentLength > 0)
    {
        path = Path.Combine(directory + "/", Path.GetFileName(file.FileName));
        file.SaveAs(Server.MapPath(path));
        employee.AttachedInformation.Add(path);
    }
}