场合
我有两个应用程序,它们将图像/文档读取并保存到一个特定的文件夹中。例如,如果用户在一个程序中上传他们的图像,则程序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);
时,我得到了错误的物理路径,预期的虚拟路径。
此viewbag包含我的文件存储的整个文件夹,其中 EVERYONE 用户具有完全访问权限。所以我真的不确定为什么它会造成伤害。
P.S我不能说像"~/content/images"
这样的东西,因为该文件的路径是完全不同的应用程序,我想我需要给它整个位置。
任何帮助将不胜感激。
感恩
答案 0 :(得分:0)
看起来您的defaultImage
变量包含物理路径,这可用于保存图像,因为API需要表单中的路径,例如c:\website\images\....
但要查看,您需要VirtualPath
,http://mycoolsite/images/image.jpg
形式的内容,这就是错误告诉您的内容。
你的控制器;因此,应该返回类似
的内容ViewBag.imagePath = Properties.Settings.Default.imagePath.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty);
为了获得相对路径。见另一个related question。
编辑我刚看到你的“PS ......”
如果是这种情况,那么您需要将完整的URL传递给其他应用程序:(例如http://someothersite.com/images/image.jpg
)。