如果html文件是本地文件(在我的C驱动器上),它将起作用,但是如果html文件在服务器上并且图像文件是本地文件,则无法使用。这是为什么?
任何可能的解决方法?
如果html文件是本地文件(在我的C驱动器上),它将起作用,但是如果html文件在服务器上并且图像文件是本地文件,则无法使用。这是为什么?
任何可能的解决方法?
src=""
Answers:
如果客户端可以请求本地文件系统文件,然后使用JavaScript找出其中的内容,则将是一个安全漏洞。
解决此问题的唯一方法是在浏览器中构建扩展。Firefox扩展和IE扩展可以访问本地资源。Chrome的限制更为严格。
C:
不是公认的URI方案。试试吧file://c|/...
。
老实说,最简单的方法是将文件托管添加到服务器。
打开IIS
在默认网站下添加虚拟目录
在“网络服务”和“ IIS AppPool \ DefaultAppPool”的C:驱动器上的文件夹中添加适当的权限
刷新默认网站
这样就完成了。现在,您可以通过导航到http://yourServerName/whateverYourFolderNameIs/yourImage.jpg浏览到该文件夹中的任何图像,并在img src中使用该URL。
希望这可以帮助某人
我们可以使用javascript的FileReader()和readAsDataURL(fileContent)函数来显示本地驱动器/文件夹文件。将更改事件绑定到图像,然后调用javascript的showpreview函数。试试这个 -
<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;'>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<title></title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
function showpreview(e) {
var reader = new FileReader();
reader.onload = function (e) {
$("#previewImage").attr("src", e.target.result);
}
//Imagepath.files[0] is blob type
reader.readAsDataURL(e.files[0]);
}
</script>
</head>
<body >
<div>
<input type="file" name="fileupload" value="fileupload" id="fileupload" onchange='showpreview(this)'>
</div>
<div>
</div>
<div>
<img width="50%" id="previewImage">
</div>
</body>
</html>
除了关于安全规则的Newtang观察之外,您如何知道查看您页面的任何人在处都有正确的图像c:\localfile.jpg
?你不能 即使您认为可以,也不能。它以Windows环境为前提。
如果您使用Google chrome浏览器,则可以这样使用
<img src="E://bulbpro/pic_bulboff.gif" width="150px" height="200px">
但是,如果您使用Mozila Firefox,则需要添加“ file”文件。
<img src="file:E://bulbpro/pic_bulboff.gif" width="150px" height="200px">
您还需要上传图像,然后链接到服务器上的图像。
如果要为自己或某些客户部署本地网站,则可以通过mklink /D MyImages "C:/MyImages"
以cmd的管理员身份在网站根目录中运行来解决此问题。然后在html中,执行<img src="MyImages/whatever.jpg">
和mklink建立的符号链接会将相对的src链接与C驱动器上的链接连接起来。它为我解决了这个问题,因此可以帮助其他人解决这个问题。
(显然,这对公共网站不起作用,因为您不能在人的计算机上轻松运行cmd命令)
我尝试了很多技术,最后在C#端和JS端找到了一种。您不能为src属性提供物理路径,但可以将base64字符串作为src给予Img标签。让我们看一下下面的C#代码示例。
<asp:Image ID="imgEvid" src="#" runat="server" Height="99px"/>
C#代码
if (File.Exists(filepath)
{
byte[] imageArray = System.IO.File.ReadAllBytes(filepath);
string base64ImageRepresentation = Convert.ToBase64String(imageArray);
var val = $"data: image/png; base64,{base64ImageRepresentation}";
imgEvid.Attributes.Add("src", val);
}
希望这会有所帮助