情况
我有两个应用程序,可以读取图像/文档并将其保存到一个特定的文件夹中。例如,如果用户在一个程序中上传他们的图像,则程序 B 的用户应该查看甚至编辑该图像。
我做了什么
在我的一个应用程序中,我在设置中为我的路径字符串创建了一个设置。所以为了保存图像路径,我调用
path = System.IO.Path.Combine(Properties.Settings.Default.imagePath, Fimage);
这工作正常。 但是,我的问题是当我尝试在编辑视图中查看图像时。
控制器
ViewBag.imagePath = Properties.Settings.Default.imagePath;
视图
<img src="@ViewBag.imagePath/@Url.Content(@Model.image)" alt="Image" style="height: 255px; " />
问题
问题是在尝试查看图像时出现错误,Not allowed to load local resource:
我对该文件夹具有完全访问权限,并且当我尝试浏览到错误消息中的文件时,将显示图片。我被建议使用其他问题,server.MapPath
但是当我这样做时Server.MapPath(Properties.Settings.Default.imagePath);
我会收到错误的物理路径,预期的虚拟路径。
此视图包包含我的文件存储的整个文件夹字符串,EVERYONE用户具有完全访问权限。所以我真的不确定它为什么要制造导火索。
附言我不能说类似"~/content/images"
,因为该文件的路径位于完全不同的应用程序中,我认为我需要为它提供整个位置。
任何帮助将不胜感激。
感激
看起来您的defaultImage
变量包含一个物理路径,该路径可用于保存图像,因为 API 需要表单形式的路径,例如c:websiteimages....
但是为了查看,您需要VirtualPath
,形式http://mycoolsite/images/image.jpg
的东西,这就是错误告诉您的。
因此,您的控制器应返回类似
ViewBag.imagePath = Properties.Settings.Default.imagePath.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty);
为了获取相对路径。请参阅其他相关问题。
编辑我刚刚看到你的"PS...">
如果是这种情况,则需要将完整的 URL 传递给其他应用程序:(例如http://someothersite.com/images/image.jpg
(。