在我最近的 mvc 4 项目中,我将多个图像和其他文件(例如doc,pdf,ppt等)作为字符串存储在我的数据库中。现在我想显示这个多个图像,并希望显示其他文件的链接。
例如,我将数据作为字符串存储在我的数据库中,如下所示:
1980082_10201802177236118_516383197_o.jpg, ASP.NET MVC Interview Questions & Answers.pdf, Sample-1.jpg,
现在我想获取此字符串并显示图像并提供其他文件的链接。
答案 0 :(得分:0)
我希望它会有所帮助。首先,当你保存在数据库中时,你必须确保用所有路径保存它,而不仅仅是文件名。简单地在你的行动中:
public FilePathResult GetDoc(int yourParam)
{
var path= (from r in yourContext.yourTable where id == yourParam
select r.path).FirstOrDefault()
//Considering that your path contains also the folder
return new FilePathResult(path);
}
在您的视图中:
<img src="@Url.Action("GetDoc", "YourController", new { yourParam=Model.yourParam}) " />
@*For a link*@
<a href="@Url.Action("GetDoc", "YourController", new { yourParam=Model.yourParam}) ">@Model.TheNameOfYourFile <a/>
答案 1 :(得分:0)
首先请注意,将文件名存储在db中的一行中并不是一个好主意。如果我理解你正确,要从该行中提取图像和文件,请创建一个包含不同文件列表列表的模型:
public class RowResult
{
public RowResult()
{
Images = new List<string>();
Pdfs = new List<string>();
}
public List<string> Images { get; set; }
public List<string> Pdfs { get; set; }
//you can add other file types here
}
创建一个返回每行结果的方法:
public RowResult ExtractFilesFromRow(string row)
{
RowResult result = new RowResult();
string[] parts = row.Split(' ');
foreach (string part in parts)
{
if (part.TrimEnd(',').EndsWith(".jpeg")) result.Images.Add(part);
if (part.TrimEnd(',').EndsWith(".pdf")) result.Pdfs.Add(part);
//add others here..
}
return result;
}
最后,要在每行中显示它们,您可以在db中获取RowResult
并填充List<RowResult>
。在行动:
....
List<RowResult> list = new List<RowResult>();
foreach (string row in rows)
{
list.Add(ExtractFilesFromRow(row));
}
...
return list;
在视图中:
@foreach (string result in Model)
{
//here depends on you want
<img src="@Url.Content("~/Uploads/Images/" + result.Images[0])" />
....
<img src="@Url.Content("~/Uploads/Images/" + result.Images[1])" />
}
答案 2 :(得分:0)
我将多个图像和其他文件(例如doc,pdf,ppt等)作为字符串存储在我的数据库中
我认为您的意思是将文件名保存为数据库中的字符串。
现在让我们从您共享的数据库数据开始
例如,我将数据作为字符串存储在我的数据库中,如下所示: 1980082_10201802177236118_516383197_o.jpg,ASP.NET MVC访谈问题&amp; amp; Answers.pdf,Sample-1.jpg,
当逗号分隔成为此
时现在我们这里只有文件名和“ 物理路径 ”来存储这些文件。
为此,您必须将文件路径保存在数据库中。除非你已经定义了一个路径说“C:/ SomeApp / MyDump /”,你只是在这里转储所有文件。
如果您是,那么您可以使用该路径将其附加文件名并在UI上显示。文件扩展名可以帮助您决定使用哪种HTML(<img>
或<a>
来显示图片或显示下载链接)