上传脚本返回空白数据

时间:2012-06-16 19:54:51

标签: php jquery uploadify rapidshare

我在我的网站上设置了Uploadify jQuery插件来管理文件上传。在onUploadSuccess事件中,我有以下代码:

'onUploadSuccess' : function(file, data, response) {
    console.log("Upload complete for file " + file.name + ". Script returned: " + data);
}

这是为了向我展示上传脚本吐出的内容。现在,通常响应是这样的:

  

上传文件test.jpg的完整版。脚本返回:   { “状态”:1, “文件”:{ “ID”: “v8rwlxj3”, “名称”: “test.jpg放在”}}

上传脚本首先接受该文件,然后使用cURL将其上传到Rapidshare:

// Move uploaded file
move_uploaded_file($_FILES['Filedata']['tmp_name'], $targetDir . '/' . $id);

// Get the RapidShare server to upload to
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=nextuploadserver');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if(!$uploadServer = trim(curl_exec($ch))) {
    error('nextuploadserver failed');
}
if(strstr($uploadServer, 'ERROR:')) {
    error('nextuploadserver failed');
}

// Upload the file to RapidShare
$uploadID = mt_rand(1000000000, 9999999999);
$url = 'http://rs' . $uploadServer . '.rapidshare.com/cgi-bin/rsapi.cgi?uploadid=' . $uploadID;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
$postFields = array('sub' => 'upload',
                    'login' => 'login',
                    'password' => 'password',
                    'uploadid' => $uploadID,
                    'filename' => $_FILES['Filedata']['name'],
                    'filecontent' => '@' . $targetDir . '/' . $id);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
if(!$resp = curl_exec($ch)) {
    error('upload call failed');
}

上传时,上传脚本会发出JSON响应,如下所示:

// Output
echo json_encode(array('status' => 1, 'file' => array('id' => $id, 'name' => $uploadDetails[1])));

这适用于较小的文件。当我上传我的30MB测试文件时,我得到了这个回复:

  

为文件30mb.txt上传完成。脚本返回:

起初我认为PHP正在达到最大执行时间,但我在脚本的顶部有这个:

set_time_limit(21600); // 6 hours

此外,我会看到返回PHP错误。但它只是没有返回任何。什么可能导致这个?感谢。

4 个答案:

答案 0 :(得分:0)

您确定upload_max_filesize设置为超过30M吗?那个曾让我头疼的事。

答案 1 :(得分:0)

PHP可能没有达到时间限制,但ajax可能在等待响应时达到连接超时。

答案 2 :(得分:0)

删除uploadid post参数。带有简历上传的Uploadid参数。

答案 3 :(得分:0)

是很好的答案,虽然它是评论但帮助了我。 http://www.uploadify.com/documentation/uploadify/successtimeout/

将successTimeout设置为某个高值。比方说1小时。