请提供以下帮助。
嗨,雷,我现在得到了IE7/8的正确响应。但是,它会立即返回,Firefox 正在花时间上传带有百分比条来指示这一点。我很担心,因为有人可能会上传,然后看到它完成然后保存并且视频将不存在。关于为什么IE7/8会立即显示响应的任何建议。希望这是有道理的
感谢您的回复,但仍然不起作用。 获取上传失败。 我是否将响应作为文本/html 或文本/纯文本传递回
同样在oncomplete函数上,正确的响应日志是正确的吗?
uploader = $jq('#fine-uploader').fineUploader({
debug: true,
request: {
//endpoint: 'http://video-api.shannons.com.au/api/upload/upload.php',
endpoint: 'http://crowleyroofing.radiusmedia.com.au/uploader-test.php',
params: {
ClientToken: token,
ApplicationResponse: 'FineUploader'
},
inputName: 'FileUpload'
},
cors: {
expected: true
},
multiple: false,
validation: {
allowedExtensions : ['mp4','mov','ogm','ogv','ogx','webm','flv','avi','m4v','mkv','wmv'],
sizeLimit : 52428800
},
showMessage: function(message) {
$('.video-error').append('<div class="alert alert-error">' + message + '</div>');
}
})
.on('submit', function(event, id) {
$('.qq-upload-button').hide();
$('.qq-upload-list').show();
})
.on('complete', function(event, id, name, response) {
console.log(response);
//$jq('.qq-upload-status-text').html(response);
/*$jq('#event-post-form').prepend('<input id="mediatoken" type="hidden" name="mediatoken" value="' + response.Data.MediaId + '">');
var size = $('.qq-upload-size').text();
var html = '' + name + ' ' + size + ' <span class="icon"><em class="club-tick"></em></span>';
$jq('.qq-upload-status-text').html(html);*/
});
PHP在这里
<?php
function gen_uuid() {
return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
// 32 bits for "time_low"
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
// 16 bits for "time_mid"
mt_rand( 0, 0xffff ),
// 16 bits for "time_hi_and_version",
// four most significant bits holds version number 4
mt_rand( 0, 0x0fff ) | 0x4000,
// 16 bits, 8 bits for "clk_seq_hi_res",
// 8 bits for "clk_seq_low",
// two most significant bits holds zero and one for variant DCE1.1
mt_rand( 0, 0x3fff ) | 0x8000,
// 48 bits for "node"
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
);
}
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']!="XMLHttpRequest")) {
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: origin, x-requested-with, content-type, cache-control');
header("Content-Type: text/html");
$data = array("success" => true, "uuid" => gen_uuid());
$json = json_encode($data);
echo "$json <script src='"http://crowleyroofing.radiusmedia.com.au/iframe.xss.response-3.9.0-3.js'"></script>";
}
?>
这是我从ie9/8得到的回复
[FineUploader 3.9.0-3] 收到 1 个文件或输入。
[精细上传器 3.9.0-3] 正在发送 0 的上传请求
[FineUploader 3.9.0-3] 收到 CORS 上传请求的 iframe 加载事件(iframe 名称 0_89b9b578-b08e-4221-be2b-a1bac04792c8)
[FineUploader 3.9.0-3] 收到以下窗口消息:"{"成功":true,"uuid":"9da17ad5-ad6a-40cd-81b5-226e837db45b"}'
[精细上传器 3.9.0-3] 没有从加载的 iframe 收到 iframe 名称 0_89b9b578-b08e-4221-be2b-a1bac04792c8 的有效消息
[FineUploader 3.9.0-3] iframe 已加载
你没有为IE9或更早版本发起的跨源上传返回正确的响应。 如文档所述,您必须返回一个文本/html 响应,其中包含指向iframe.xss.response.js
文件的脚本标记,以及一个有效的 JSON 字符串,其中包含值为 true
的 success
属性和值等于关联文件的 UUID 的 uuid
属性。
您的响应代码应如下所示:
$data = array("success" => true, "uuid" => "9da17ad5-ad6a-40cd-81b5-226e837db45b");
$json = json_encode($data);
echo "$json <script src='"http://crowleyroofing.radiusmedia.com.au/iframe.xss.response-3.9.0-3.js'"></script>";
您需要将 uuid
属性的值替换为 Fine Uploader 随上传请求发送的 qquuid
参数的值。
此外,请注意代码的以下不相关问题:
- 无需启用
cors.allowXdr
选项。 仅当您在跨源环境中启用了删除文件功能时,才使用此功能。 debug
选项默认为false
,因此您无需显式设置此项。cors.sendCredentials
选项默认为false
,因此您无需显式设置此项。