Javascript 为什么可以';我不知道<;img src=”等;C:/localfile.jpg">;?
如果html文件是本地的(在我的C驱动器上),它就可以工作,但是如果html文件在服务器上并且图像文件是本地的,它就不能工作。为什么呢Javascript 为什么可以';我不知道<;img src=”等;C:/localfile.jpg">;?,javascript,html,filesystems,src,Javascript,Html,Filesystems,Src,如果html文件是本地的(在我的C驱动器上),它就可以工作,但是如果html文件在服务器上并且图像文件是本地的,它就不能工作。为什么呢 任何可能的解决方法?C:都不是公认的URI方案。请尝试file://c |/…。浏览器不允许访问本地文件系统,除非您正在访问本地html页面。你必须把图像上传到某个地方。如果它与html文件位于同一目录中,那么您可以使用您是否应该使用“file://C:/localfile.jpg”而不是“C:/localfile.jpg”?如果客户端可以请求本地文件系统文件,
任何可能的解决方法?
C:
都不是公认的URI方案。请尝试file://c |/…
。浏览器不允许访问本地文件系统,除非您正在访问本地html页面。你必须把图像上传到某个地方。如果它与html文件位于同一目录中,那么您可以使用
您是否应该使用“file://C:/localfile.jpg”而不是“C:/localfile.jpg”?如果客户端可以请求本地文件系统文件,然后使用JavaScript找出其中的内容,那么这将是一个安全漏洞
解决此问题的唯一方法是在浏览器中构建扩展。Firefox扩展和IE扩展可以访问本地资源。Chrome的限制性要大得多。抛开Newtang对安全规则的观察不谈,你怎么知道任何浏览你页面的人都会在
c:\localfile.jpg上看到正确的图像?你不能。即使你认为你能,你也不能。首先,它以windows环境为前提。您还需要上载映像,然后链接到服务器上的映像。我认为您尝试执行的操作有两种可能性:
您希望您的网页在服务器上运行,以便在最初设计它的计算机上找到该文件
您想让它从正在查看页面的pc上获取它吗
选项1根本没有意义:)
选项2是一个安全漏洞,浏览器禁止网页(从web提供)在浏览者的机器上加载内容
Kyle Hudson告诉了您需要做什么,但这是非常基本的,我很难相信这就是您想要做的一切。让用户选择图像怎么样?使用输入:文件标签,然后在他们选择图像后,将其显示在客户端网页上?这在大多数情况下都是可行的。现在我正试图让它为IE工作,但与所有microsoft产品一样,它是一个cluster fork()。IE 9:如果您希望用户在将图像发布到服务器之前查看图像:
用户应将网站添加到“受信任的网站列表”中。如果您使用Google chrome浏览器,您可以这样使用
<img src="E://bulbpro/pic_bulboff.gif" width="150px" height="200px">
但是如果你使用Mozila Firefox,你需要添加“file”ex
老实说,最简单的方法是将文件托管添加到服务器
- 开放IIS
- 在默认网站下添加虚拟目录
- 虚拟路径将是您要在浏览器中浏览到的路径。因此,如果选择“serverName/images”,则可以通过转到
- 然后在C:驱动器上添加物理路径
- 向C:驱动器上的文件夹添加“网络服务”和“IIS AppPool\DefaultAppPool”的相应权限
- 刷新默认网站
- 现在,您可以浏览到该文件夹中的任何图像,方法是在img src中导航并使用该url
希望这对某人有所帮助如果您仅为自己或某些客户部署本地网站,您可以通过运行mklink/D MyImages“C:/MyImages”来解决此问题“
在网站根目录中作为管理员在cmd中。然后在html中,执行
,由mklink建立的符号链接将相对src链接与C驱动器上的链接连接起来。它为我解决了这个问题,所以它可能会帮助其他人来解决这个问题
(显然,这不适用于公共网站,因为您无法在人们的计算机上轻松运行cmd命令)我们可以使用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>
功能显示预览(e){
var reader=new FileReader();
reader.onload=函数(e){
$(“#预览图像”).attr(“src”,e.target.result);
}
//Imagepath.files[0]是blob类型
reader.readAsDataURL(e.files[0]);
}
我尝试了很多技术,最终在C#side和JS端找到了一种。
不能为src属性提供物理路径,但可以将base64字符串作为src-to-Img标记提供。
让我们看看下面的C代码示例
<asp:Image ID="imgEvid" src="#" runat="server" Height="99px"/>
希望这会有所帮助从文件开始://
到文件名结束
应该可以:
<img src="file:///C:/Users/91860/Desktop/snow.jpg" alt="Snow" style="width:100%;">
我可以问一下你为什么要做这样的事情吗?@BorisCallens例如,当我在自己的机器上有了新图像,我不想经历上传到暂存的整个过程时,我可能想在我的暂存网站上测试图像的更改。似乎唯一的方法是改变开发环境中的形象,而不是以任何方式登台。这也是一个很好的方法,可以与技术水平较低的熟人开玩笑,让他们认为你已经侵入了一个网站。另一种快速做到这一点的方法是上传文件说,google drive或其他任何东西,然后复制图像url并将其粘贴到src=”“
中,只需在您的计算机上使用开发Web服务器即可。现在这很容易,因为即使是PHP也内置了一个。不过,flash能够访问用户选择的任何内容,即使是在ChromeUp中也是如此,因为它回答了为什么,并给出了一些解决方法。我可能会做的(我知道我没有提供太多的背景)是创建一个本地Web服务器来服务本地图像。通过这种方式浏览器可以显示它们。Flash只能在策略文件就位的情况下访问本地资源,否则它将进入本地模式,并以其他方式受到限制。这种偏执的安全性
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);
}
<img src="file:///C:/Users/91860/Desktop/snow.jpg" alt="Snow" style="width:100%;">