Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 Ajax调用使用FTP加载Json文件,需要显示百分比加载进度条_Javascript_Jquery_Json_Ajax_Ftp - Fatal编程技术网

Javascript Ajax调用使用FTP加载Json文件,需要显示百分比加载进度条

Javascript Ajax调用使用FTP加载Json文件,需要显示百分比加载进度条,javascript,jquery,json,ajax,ftp,Javascript,Jquery,Json,Ajax,Ftp,我正在使用jQueryAjax加载保存在FTP服务器中的文件。需要显示正在加载的文件的百分比 以前我有HTTP请求,并且使用XMLHttpRequest有效。下面是有效的代码 $.ajax({ xhr: function() { var xhr = new window.XMLHttpRequest(); // Upload progress xhr.upload.addEventListener("progress", function

我正在使用jQueryAjax加载保存在FTP服务器中的文件。需要显示正在加载的文件的百分比

以前我有HTTP请求,并且使用XMLHttpRequest有效。下面是有效的代码

$.ajax({
    xhr: function() {
        var xhr = new window.XMLHttpRequest();

        // Upload progress
        xhr.upload.addEventListener("progress", function(evt){
        if (evt.lengthComputable) {
            var percentComplete = (evt.loaded / evt.total)*100;
            var loadPercent = '<div id="fountainTextG">'+Math.round(percentComplete)+'% complete ..</div>';
            $(".sqlLoading").html(loadPercent).removeClass("hide");
            jsAPP.sqlLoading = true;
        }
      }, false);

      // Download progress
      xhr.addEventListener("progress", function(evt){
          if (evt.lengthComputable) {
          var percentComplete =(evt.loaded / evt.total)*100;
          var loadPercent = '<div id="fountainTextG">'+Math.round(percentComplete)+'% complete ..</div>';
          $(".sqlLoading").html(loadPercent).removeClass("hide");
          jsAPP.sqlLoading = true;
          }
      }, false);

      return xhr;
    },
    type: 'POST',
    url:'ftp://192.168.1.157/pub/1.json',
    dataType: "jsonp",
    jsonpCallback:"abc",
    success: function(obj){
        console.log("File loaded successfully");

    },
    error:function(err,stat,erroT){

        $(".page").html("<div class='data_error'> Sorry! No data available for this city.</div>");
    }
});
$.ajax({
xhr:function(){
var xhr=new window.XMLHttpRequest();
//上传进度
xhr.upload.addEventListener(“进度”,函数(evt){
if(evt.长度可计算){
var percentComplete=(evt.loaded/evt.total)*100;
var loadPercent=''+数学四舍五入(完成百分比)+'%complete;
$(“.sqlLoading”).html(loadPercent).removeClass(“隐藏”);
jsAPP.sqlLoading=true;
}
},假);
//下载进度
xhr.addEventListener(“进度”,函数(evt){
if(evt.长度可计算){
var percentComplete=(evt.loaded/evt.total)*100;
var loadPercent=''+数学四舍五入(完成百分比)+'%complete;
$(“.sqlLoading”).html(loadPercent).removeClass(“隐藏”);
jsAPP.sqlLoading=true;
}
},假);
返回xhr;
},
键入:“POST”,
网址:'ftp://192.168.1.157/pub/1.json',
数据类型:“jsonp”,
jsonpCallback:“abc”,
成功:功能(obj){
log(“文件加载成功”);
},
错误:函数(err、stat、erroT){
$(“.page”).html(“对不起!没有此城市的可用数据。”);
}
});

但这对FTP请求不起作用。有没有办法在FTP上显示进度加载程序?请帮忙。

在我尝试并测试了通过js访问文件的三种方法后,我对这个问题的看法如下

  • 尽管XMLHttpRequest声明它支持其他协议,但它 似乎无法访问通过ftp提供的文件

  • 当我尝试使用下面的代码访问时,我遇到了一个CORS错误 预料之中

  • XMLHttpRequest无法加载ftp://ftp.funet.fi/pub/standards/RFC/rfc959.txt. 跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https、chrome扩展资源。

  • FTP服务器似乎不提供访问控制头,这也得到了

如果您使用的是现代浏览器,则可以使用下载属性(这是一个简单的

  • 我尝试使用FTP URL访问该文件,但它抱怨 我传递的参数

    var f=新文件(“ftp://ftp.funet.fi/pub/standards/RFC/rfc959.txt“,正确)

  • 即使我成功地通过了正确的参数集, 它会抱怨URL的性质,因为它只是 需要服务器/用户计算机提供的路径,如中所述 如果我错了,请纠正我

结论:

  • 最后,我想得出结论,这可能是不可能的服务& 使用js从浏览器通过FTP跟踪文件的进度
  • 您可能不得不回退到HTTP协议,通过HTTP上的服务器为文件提供服务,以实现您的目标
我已经链接到了我翻阅过的大部分资源——这里还有一些


希望这能有所帮助。

在我尝试并测试了通过js访问文件的三种方法后,我对这个问题的看法如下

  • 尽管XMLHttpRequest声明它支持其他协议,但它 似乎无法访问通过ftp提供的文件

  • 当我尝试使用下面的代码访问时,我遇到了一个CORS错误 预料之中

  • XMLHttpRequest无法加载ftp://ftp.funet.fi/pub/standards/RFC/rfc959.txt. 跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https、chrome扩展资源。

  • FTP服务器似乎不提供访问控制头,这也得到了

如果您使用的是现代浏览器,则可以使用下载属性(这是一个简单的

  • 我尝试使用FTP URL访问该文件,但它抱怨 我传递的参数

    var f=新文件(“ftp://ftp.funet.fi/pub/standards/RFC/rfc959.txt“,正确)

  • 即使我成功地通过了正确的参数集, 它会抱怨URL的性质,因为它只是 需要服务器/用户计算机提供的路径,如中所述 如果我错了,请纠正我

结论:

  • 最后,我想得出结论,这可能是不可能的服务& 使用js从浏览器通过FTP跟踪文件的进度
  • 您可能不得不回退到HTTP协议,通过HTTP上的服务器为文件提供服务,以实现您的目标
我已经链接到了我翻阅过的大部分资源——这里还有一些


希望这能有所帮助。

只是好奇-ajax支持ftp吗?好吧,我做了一些挖掘,并得出了支持其他协议即ftp的结论。也许你可以与XMLHttpRequest一起使用来实现你的目标。只是好奇-ajax支持ftp吗?好吧,所以我做了一些挖掘,并得出了支持其他协议即ftp的结论。也许你可以与XMLHttpRequest结合使用以实现您的目标。
 testFtpLoad : function(){
   var xhr = new XMLHttpRequest();
   xhr.open("GET", "ftp://ftp.funet.fi/pub/standards/RFC/rfc959.txt", true);
   xhr.onload = function (e) {
     if (xhr.readyState === 4) {
       if (xhr.status === 200) {
         console.log(xhr.responseText);
       } else {
         console.error(xhr.statusText);
       }
     }
   };
   xhr.onerror = function (e) {
     console.error(xhr.statusText);
   };
   xhr.send(null);
},
testUsingAnchorTag : function(){
      var $aTag = document.createElement("a");
      $aTag.href =  "ftp://ftp.funet.fi/pub/standards/RFC/rfc959.txt";
      $aTag.id = "temporaryDownloadLink";
      $aTag.download = "rfc959.txt";
      document.body.appendChild($aTag);
      $aTag.click();
      setTimeout(function(){
        $('#temporaryDownloadLink').remove();
      }, 1000); 
  }