我正在处理一个电子商务项目。在此解决方案中,我有2个项目管理部分和ui部分。问题是,如果我将图像存储在admin中,则在admin项目中可以正常工作,如何从UI项目中访问它?还是我必须在解决方案中创建一个公共目录来存储和检索图像,我不知道该怎么办以及该怎么办,请帮帮我。
要保存图像,我的代码是......
public static string SaveAnImage(HttpPostedFileBase file, string path)
{
string fileName = "";
string vFileName = Guid.NewGuid().ToString();
string fileExtension = Path.GetExtension(file.FileName)?.ToLower();
if (fileExtension != null)
{
path += vFileName;
path += fileExtension.ToLower();
file.SaveAs(path);
fileName = vFileName + fileExtension.ToLower();
}
return fileName;
}
并重新读取图像...。
ProductImage = Path.Combine(_mainImagepath , objDataReader["ProductImage"].ToString());
现在如何从UI项目中检索它???谢谢....
答案 0 :(得分:1)
这实际上是两个独立的问题:
如何在生产环境中共享文件夹?
如果站点位于同一服务器上,则可以将共享映像放置在同一服务器上的几乎任何位置。如果它们在不同的服务器上,则您希望将两个服务器上的网络位置映射到映像所在的位置。无论哪种情况,您都将在两个站点上的IIS中创建指向该共享位置的虚拟目录。
如何共享开发中的文件夹(即Visual Studio)?
有点棘手。基本上,您将需要以与生产中相同的方式来处理它,但是问题是IIS Express的透明性不如完整IIS透明。我在Visual Studio 2012和2013中采用了以下方法,但是上一次在2015年尝试使用它时,它不再起作用。不过,由于已经有一段时间了,现在可能已经解决了。无论如何,这几乎是您唯一的选择。
此时,您应该回到Visual Studio主窗口。您实际上不会在项目/解决方案中发现任何差异,因为这都是在IIS Express中完成的。但是,如果您浏览网站并尝试将图像加载到虚拟目录下,则应该能够在浏览器中看到它,即:
http://localhost:12345/SharedImages/foo.jpg 如果您看到该图像,则一切正常。
答案 1 :(得分:0)
有几种方法可以从服务器获取文件流。因此对于静态文件,您可以使用@Url.Content("yourfilepath")
在视图中创建下载链接,也可以创建一个操作来下载文件流:
public FileResult GetMyFile()
{
byte[] fileBytes = System.IO.File.ReadAllBytes(@"c:\folder\myfile.ext");
string fileName = "myfile.ext";
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
答案 2 :(得分:0)
在Razor View中,您可以使用以下代码显示它。
<img src="@Url.Content("/imagesfolder/image123.jpg")" alt="Image" >