使用 ajax 获取通过 FTP 上传的文件的文件大小 - 试图防止 ajax 中断自身
Posted
技术标签:
【中文标题】使用 ajax 获取通过 FTP 上传的文件的文件大小 - 试图防止 ajax 中断自身【英文标题】:Using ajax to get file size on file being uploaded via FTP - trying to prevent ajax from interrupting itself 【发布时间】:2015-03-30 22:56:10 【问题描述】:我正在尝试使用 ajax 调用检查 FTP 上传的文件的进度,该调用重复回显 bat 文件的输出,该文件在上传时检查文件的大小。也就是说,我试图确保一旦通过 UNC 路径发送了 ajax 请求,它就不会被另一个中断,因此是 .done 和 .fail。
这在应用程序被转移到 UNC 路径之前已经工作,但现在尽管 ajax“成功”我仍然没有得到任何响应。
当我手动尝试 bat 文件时,它可以工作,但需要一段时间(我相信 10 到 15 秒左右)才能运行,这导致我认为我在 ajax 发送另一个调用时遇到了问题,而前一个调用没有还没完。
我试图通过在 ajax 请求中使用 .done 和 .fail 来解决这个问题,但我显然遗漏了一些东西。如果有人能指出我正确的方向或向我解释我哪里出错了,我将不胜感激!感谢您的帮助!
代码示例:
function getSize(f)
$.ajax(
url: "php file handling the ajax request",
type: "POST",
data:
file : encodeURIComponent(f),
)
.done(function(data)
console.log("Ajax success");
var percent = (data / s) * 1000;
if(Math.round(percent) != 1000)
$( "#progressbar" ).progressbar( "option", "value", Math.round(percent) );
)
.fail(function(data)
if ( data.responseCode )
console.log( data.responseCode );
console.log("Ajax failure");
);
截至目前,我收到了“Ajax 成功”控制台消息,但没有在数据中恢复任何内容。
更新 Cornelis 刚刚指出我应该尝试 GET 而不是 POST。这有一个有趣的效果,让我得到 -2 的返回响应,而不是什么都没有。进步!!
【问题讨论】:
由于您收到“成功”消息,表明您的 AJAX 正在运行,因此服务器端脚本可能没有返回您期望的内容。无论如何,这是一种笨拙的做事方式。您可以将事件侦听器添加到 Ajax 'onprogress' 事件并直接从中获取进度 - 无需服务器调用。 我不知道这可以处理通过 FTP 从客户端机器上传到服务器的文件。我一定是看错了什么。 不 - 我误读了你的问题。它不适用于 FTP。这就引出了一个问题:为什么不通过 HTTP 使用 Ajax 帖子传输文件? 我对第二个大声笑感到非常兴奋。因为我正在尝试为已经启动并运行并且已经有点混乱的芽修复一些东西。试图在这个巨大的纸牌屋中尽可能少地改变一些事情。 【参考方案1】:尝试使用 GET 而不是 POST
function getSize(f)
$.ajax(
url: "php file handling the ajax request",
type: "GET",
data:
file : encodeURIComponent(f),
)
.done(function(data)
console.log("Ajax success");
var percent = (data / s) * 1000;
if(Math.round(percent) != 1000)
$( "#progress_" + id ).progressbar( "option", "value", Math.round(percent) );
)
.fail(function(data)
if ( data.responseCode )
console.log( data.responseCode );
console.log("Ajax failure");
);
【讨论】:
而这种变化会产生什么不同? 好吧,我现在得到的是 -2 而不是什么都没有,哈哈。所以它的进步! @gv0000 您要获取的数据在哪里?您能否快速举例说明数据。 数据来自 bud 的员工,该员工通过此应用程序将其上传到服务器。可以是从 pdf 到视频采访的任何内容。在他决定切换到 UNC 路径之前它运行良好,但现在运行需要相当长的时间。以上是关于使用 ajax 获取通过 FTP 上传的文件的文件大小 - 试图防止 ajax 中断自身的主要内容,如果未能解决你的问题,请参考以下文章