javascript:从服务器下载文件:打开文件对话框,选择保存文件的文件夹

时间:2016-08-12 13:15:27

标签: javascript jquery

想要下载文件,"保存文件夹对话框'应弹出以选择保存文件的文件夹。

我尝试使用window.locationwindow.location.assignwidow.open个函数。 一切都会打开一个新的页面!并且无法看到任何"保存文件夹对话框"突然出现了!

下载文件名扩展名为.cfg,文件可以是二进制文件或Json文件(文本文件)。如果文件是二进制文件还是文本文件会有什么区别吗?



$( document ).ready(function() {

  $("#DownloadFile").click(function() {
    // // hope the server sets Content-Disposition: attachment!
    var 	urlData= window.location.protocol + "//" +       window.location.host + "/" + "download/testdown.cfg";
    alert("download file: " + urlData);
    retval = fileExists(urlData);
    if(retval) {
      alert("file exists !!");
      window.location = 'download/testdown.cfg';
      // window.location.assign(urlData);
      // window.open(urlData, 'Download');  

    }else{
      alert("File not exists !");
    }
  });





  function fileExists(url) {
    alert(" url : " + url);
    if(url){
      alert(" url : " + url);
      var req = new XMLHttpRequest();
      req.open('HEAD', url, false);
      req.send();
      // return req.status==200;
      return true;
    } else {
      return false;
    }
  }

});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table table-condensed table-bordered table-striped volumes tabcenter" 
       style="align:center; margin:5px; width:98%">

  <tbody>
    <tr>
      <td>
        <div class="row">
          <h1>Choose File Type</h1>
          <label class="radio-inline">
            <input name="radioGroup" id="radio1" value="option1" type="radio"> Binary Data
          </label>
          <label class="radio-inline">
            <input name="radioGroup" id="radio2" value="option2" checked="" type="radio"> Json Data
          </label>

        </div>  
      </td>

      <td > 
        <button type="submit" id="DownloadFile" >Download!</button>
      </td>
    </tr>
  </tbody>
</table>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

出于安全考虑,浏览器中的JavaScript不允许访问用户计算机。所以你只需要以标准方式制定方法。按钮向服务器发送请求,它返回正确的标题,将文件保存在特殊目录中。也阅读了这个答案。

How can I read the client's machine/computer name from the browser?

同时阅读这个答案。

Local file access with javascript