Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript的HTTP POST可下载数据链接_Javascript_Html_Http Post_Content Disposition - Fatal编程技术网

使用JavaScript的HTTP POST可下载数据链接

使用JavaScript的HTTP POST可下载数据链接,javascript,html,http-post,content-disposition,Javascript,Html,Http Post,Content Disposition,我有一个HTTP POST REST端点,它使用图像并返回一个HTML文档,其中包含图像中的像素数据。HTTP响应包括标题内容配置:附件;filename=Pixels.html,以便浏览器提示下载 我想要一个HTML/JavaScript(不是jQuery)应用程序 允许我浏览和选择图像(例如, 单击链接后,将图像数据发布到端点,并让我将HTML内容下载到磁盘(例如,Get Pixels) 如何执行此操作?我尝试了以下代码: function getPixels() { var

我有一个HTTP POST REST端点,它使用图像并返回一个HTML文档,其中包含图像中的像素数据。HTTP响应包括标题内容配置:附件;filename=Pixels.html,以便浏览器提示下载

我想要一个HTML/JavaScript(不是jQuery)应用程序

  • 允许我浏览和选择图像(例如,
  • 单击链接后,将图像数据发布到端点,并让我将HTML内容下载到磁盘(例如,

    Get Pixels

  • 如何执行此操作?我尝试了以下代码:

      function getPixels() {
         var input = document.getElementById("fid");
         if (input.files && input.files[0]) {
            if (typeof (FileReader) != "undefined") {
               var reader = new FileReader();
               reader.onload = function (e) {
                  var imgData = e.target.result;
                  var postUrl = "./GetPixelsService.svc/image";
                  var xhr = new XMLHttpRequest();
                  xhr.open("POST", postUrl);
                  xhr.setRequestHeader("Content-Type", "image/png");
                  //xhr.onreadystatechange = function () {
                  //   if (xhr.readyState === 4) {
                  //      var res_display = document.getElementById("results");
                  //      res_display.srcdoc = xhr.responseText;
                  //   }
                  //}
                  xhr.send(imgData);
               };
               reader.readAsArrayBuffer(input.files[0]);
            }
         }
      }
    
    下面是调用上述函数的HTML blurb

      <p>
         Upload the image here:
      </p>
      <input id="fid" name="fid" type="file" />
      <!--<button type="submit" onclick="javascript: getPixels()">Get Pixels</button>-->
      <p onclick="javascript: getPixels()">Get Pixels</p>
      <p />
      <hr />
      <p>
         <img id="img2check" src="" alt="" />
      </p>
      <p />
      <iframe id="results" style="width: 100%; border: 0; height: 400px;" src="javascript:;">
         Your browser does not support iframes.
      </iframe>
    
    
    在此处上载图像:
    

    获取像素


    您的浏览器不支持iFrame。

    我能够选择响应并将其显示在iframe中,但无法让浏览器下载内容

    感谢您的帮助。我已经查看了有关StackOverflow的相关问题,但到目前为止没有任何帮助


    提前感谢。

    您不能强制客户端浏览器使用XMLHttpRequest提示保存对话框

    您可以做以下几点:

    1:请检查我对另一个类似问题的回答:

    2:在服务器上生成文件或创建
    get
    类型请求处理程序,并使用
    download
    属性提供指向该文件的链接。

    3:使用第三方应用程序,如Downloadify:


    4:还有另一种使用
    Blob
    的方法,我在这里还没有尝试过:。这篇文章是关于base64图像的,但我认为值得尝试使用
    html
    文件。

    您不能强制客户端浏览器用XMLHttpRequest提示保存对话框

    您可以做以下几点:

    1:请检查我对另一个类似问题的回答:

    2:在服务器上生成文件或创建
    get
    类型请求处理程序,并使用
    download
    属性提供指向该文件的链接。

    3:使用第三方应用程序,如Downloadify:


    4:还有另一种使用
    Blob
    的方法,我在这里还没有尝试过:。这篇文章是关于base64图像的,但我认为值得尝试使用
    html
    文件。

    多亏了er han,以下代码实现了目标

      <!DOCTYPE html>
      <html>
      <head>
         <meta charset="utf-8" />
         <title></title>
      </head>
      <body>
         <script type="text/javascript">
            function getPixels() {
               showImage();
               var input = document.getElementById("fid");
               if (input.files && input.files[0]) {
                  if (typeof (FileReader) != "undefined") {
                     var reader = new FileReader();
                     reader.onload = function (e) {
                        var imgData = e.target.result;
                        var postUrl = "./SimpleService.svc/image";
                        var xhr = new XMLHttpRequest();
                        xhr.open("POST", postUrl);
                        xhr.setRequestHeader("Content-Type", "image/png");
                        xhr.onreadystatechange = function () {
                           if (xhr.readyState === 4) {
                              var res_url = URL.createObjectURL(new Blob([xhr.responseText]));
                              var lnk = document.getElementById("dlink");
                              lnk.href = res_url;
                              lnk.style.display = "block";
                           }
                        }
                        xhr.send(imgData);
                     };
                     reader.readAsArrayBuffer(input.files[0]);
                  }
               }
            }
    
            function showImage() {
               var input = document.getElementById("fid");
               if (input.files && input.files[0]) {
                  if (typeof (FileReader) != "undefined") {
                     var reader = new FileReader();
                     reader.onload = function (e) {
                        var img_display = document.getElementById("img2check");
                        img_display.src = e.target.result;
                     };
                     reader.readAsDataURL(input.files[0]);
                  }
               }
            }
         </script>
    
         <p>
            Upload the image here:
         </p>
         <input id="fid" name="fid" type="file" />
         <p/>
         <button type="submit" onclick="javascript: getPixels()">Upload</button>
         <p />
         <hr />
         <p>
            <img id="img2check" src="" alt="" />
         </p>
         <p />
         <p>
            <a id="dlink" href="#" download="Data.html" style="display: none;">Download data</a>
         </p>
      </body>
      </html>
    
    
    函数getPixels(){
    showImage();
    var输入=document.getElementById(“fid”);
    if(input.files&&input.files[0]){
    if(typeof(FileReader)!=“未定义”){
    var reader=new FileReader();
    reader.onload=函数(e){
    var imgData=e.target.result;
    var postrl=“./SimpleService.svc/image”;
    var xhr=new XMLHttpRequest();
    xhr.open(“POST”,postrl);
    setRequestHeader(“内容类型”、“图像/png”);
    xhr.onreadystatechange=函数(){
    if(xhr.readyState==4){
    var res_url=url.createObjectURL(新Blob([xhr.responseText]);
    var lnk=document.getElementById(“dlink”);
    lnk.href=res\u url;
    lnk.style.display=“块”;
    }
    }
    xhr.send(imgData);
    };
    reader.readAsArrayBuffer(input.files[0]);
    }
    }
    }
    函数showImage(){
    var输入=document.getElementById(“fid”);
    if(input.files&&input.files[0]){
    if(typeof(FileReader)!=“未定义”){
    var reader=new FileReader();
    reader.onload=函数(e){
    var img_display=document.getElementById(“img2check”);
    img_display.src=e.target.result;
    };
    reader.readAsDataURL(input.files[0]);
    }
    }
    }
    
    在此处上载图像:
    

    上传



    多亏了二汉,以下代码实现了目标

      <!DOCTYPE html>
      <html>
      <head>
         <meta charset="utf-8" />
         <title></title>
      </head>
      <body>
         <script type="text/javascript">
            function getPixels() {
               showImage();
               var input = document.getElementById("fid");
               if (input.files && input.files[0]) {
                  if (typeof (FileReader) != "undefined") {
                     var reader = new FileReader();
                     reader.onload = function (e) {
                        var imgData = e.target.result;
                        var postUrl = "./SimpleService.svc/image";
                        var xhr = new XMLHttpRequest();
                        xhr.open("POST", postUrl);
                        xhr.setRequestHeader("Content-Type", "image/png");
                        xhr.onreadystatechange = function () {
                           if (xhr.readyState === 4) {
                              var res_url = URL.createObjectURL(new Blob([xhr.responseText]));
                              var lnk = document.getElementById("dlink");
                              lnk.href = res_url;
                              lnk.style.display = "block";
                           }
                        }
                        xhr.send(imgData);
                     };
                     reader.readAsArrayBuffer(input.files[0]);
                  }
               }
            }
    
            function showImage() {
               var input = document.getElementById("fid");
               if (input.files && input.files[0]) {
                  if (typeof (FileReader) != "undefined") {
                     var reader = new FileReader();
                     reader.onload = function (e) {
                        var img_display = document.getElementById("img2check");
                        img_display.src = e.target.result;
                     };
                     reader.readAsDataURL(input.files[0]);
                  }
               }
            }
         </script>
    
         <p>
            Upload the image here:
         </p>
         <input id="fid" name="fid" type="file" />
         <p/>
         <button type="submit" onclick="javascript: getPixels()">Upload</button>
         <p />
         <hr />
         <p>
            <img id="img2check" src="" alt="" />
         </p>
         <p />
         <p>
            <a id="dlink" href="#" download="Data.html" style="display: none;">Download data</a>
         </p>
      </body>
      </html>
    
    
    函数getPixels(){
    showImage();
    var输入=document.getElementById(“fid”);
    if(input.files&&input.files[0]){
    if(typeof(FileReader)!=“未定义”){
    var reader=new FileReader();
    reader.onload=函数(e){
    var imgData=e.target.result;
    var postrl=“./SimpleService.svc/image”;
    var xhr=new XMLHttpRequest();
    xhr.open(“POST”,postrl);
    setRequestHeader(“内容类型”、“图像/png”);
    xhr.onreadystatechange=函数(){
    if(xhr.readyState==4){
    var res_url=url.createObjectURL(新Blob([xhr.responseText]);
    var lnk=document.getElementById(“dlink”);
    lnk.href=res\u url;
    lnk.style.display=“块”;
    }
    }
    xhr.send(imgData);
    };
    reader.readAsArrayBuffer(input.files[0]);
    }
    }
    }
    函数showImage(){
    var输入=document.getElementById(“fid”);
    if(input.files&&input.files[0]){
    如果(典型