base64 javascript не работает на iis, в некоторых браузерах тоже, почему? - PullRequest
3 голосов
/ 03 марта 2012

Я написал некоторый код 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 не работает, plz help

1 Ответ

3 голосов
/ 08 марта 2012

Ваша проблема заключается в следующем: вы пытаетесь загрузить изображение с клиентского компьютера через Javascript. Вы берете значение из <input type="file" />, а затем сразу же пытаетесь отобразить его. Вы можете сделать это только на локальном хосте с настройками IE по умолчанию. Javascript ограничен в сценарии Интернета; Вы не хотите, чтобы клиентский скрипт обращался к вашей файловой системе и отправлял сообщения на сервер без вашего ведома.

Фактически, строка alert(p); в функции f() должна отображать другое значение при работе на вашем компьютере, а не в обслуживании из IIS. Из IIS он не должен отображать полный путь, только имя файла. Как обойти это? Самый простой способ - добавить сайт в список «Надежные сайты» в окне «Свойства обозревателя», но, очевидно, вы не можете заставить своих пользователей делать это.

Я уже сражался в этой битве, и единственное бесшовное решение, которое мне удалось найти, - это загрузить изображение на сервер, а , а затем дать пользователям предварительный просмотр, которым они могут манипулировать.

Новые файловые API-интерфейсы с HTML5 обеспечат все функции, которые вы ищете, но на данный момент поддержка не распространяется.

...