【问题标题】:base64 javascript not running on iis, in some browsers too, why?base64 javascript不能在iis上运行,在某些浏览器中也是如此,为什么?
【发布时间】:2012-03-03 09:01:04
【问题描述】:

我已经编写了一些 JavaScript 代码。它在本地运行时有效,但在 IIS 下托管时无效。它也不适用于某些浏览器。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>SHOUT</title>
    <script language="javascript" type="text/javascript">

    var base64;
    var img=document.createElement("img");
    var canvas = document.createElement("canvas");
    function f()
    {
        alert("123");
        p=document.getElementById("picField").value;
        alert(p);
        img.setAttribute('src', p); 

        canvas.width = img.width; 
        canvas.height = img.height; 
        var ctx = canvas.getContext("2d"); 
        ctx.drawImage(img, 0, 0); 
        var dataURL = canvas.toDataURL("image/png"); 

        // debugger;
        //var dataURL = canvas.toDataURL("image/png"); 
        var r=dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
        base64=r;
        alert(base64);   
    }


    function getBase64Image()
    { 
        p=document.getElementById("picField").value;

        img.setAttribute('src', p); 
        var canvas = document.createElement("canvas"); 
        canvas.width = img.width; 
        canvas.height = img.height; 
        var ctx = canvas.getContext("2d"); 
        ctx.drawImage(img, 0, 0); 
        var dataURL = canvas.toDataURL("image/png"); 
        var dataURL = canvas.toDataURL("image/png"); 
        var r=dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
        base64=r;
        alert(base64);   
    } 
    </script>
  </head>
  <body id="index" class="home">
    <input type="file" id="picField"  onchange="f()" >

    <input type="submit" value="Post" class="submit" onclick="getBase64Image()"/>
  </body>
</html>

它工作正常,但在 iis 上不起作用,请帮助

【问题讨论】:

  • not functioning 什么不工作是什么意思?你有任何错误吗?
  • alert(base64) 在本地显示整个 base64 代码,但在 iis 上它只显示 data'' ,就是这样,不将图像转换为 base64 字符串
  • 我们的目标是使用 html,仅 javascript 将文件上传到服务器

标签: javascript image iis loading


【解决方案1】:

您的问题是:您正试图通过 Javascript 从客户端机器加载图片。您从&lt;input type="file" /&gt; 中获取值,然后立即尝试显示它。您只能在具有默认 IE 设置的 localhost 上执行此操作。 Javascript受限于互联网场景;您不希望客户端脚本在您不知情的情况下访问您的文件系统并将内容发布到服务器。

事实上,函数f() 中的行alert(p); 在您的机器上运行时应该显示不同的值,而不是从IIS 提供服务。从 IIS 中,它不应该显示完整的路径,只显示文件名。如何解决这个问题?最简单的方法是将该站点添加到 Internet 选项中的“受信任的站点”列表中,但显然您不能强迫您的用户这样做。

我之前打过这场仗,我能想出的唯一无缝解决方案是将图片上传到服务器,然后给用户一个他们可以操作的预览。

new File APIs with HTML5 将提供您正在寻找的所有功能,但目前还没有全面支持。

【讨论】:

    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 2011-04-13
    相关资源
    最近更新 更多