我搜索了这个网站,似乎无法找到答案。我有一个简单的AjaxUpload脚本,用于上传10s音频样本,然后将上传的文件显示为BBCode和flash播放器(在同一页面上)。 uploadSample.php
通过用下划线替换它们来处理文件名中的空格,但<input type="text"/>
中生成的代码仍然在文件名中有空格,即使PHP脚本删除了它们,因此BBCode错误并且flashplayer找不到该文件。
脚本显然是在PHP脚本剥离空格之前抓取原始文件名,所以有没有办法在上传后抓取正确的文件名,加上下划线?
的jQuery
$(function() {
var url = "uploads/samples/";
var btnUpload = jQuery('#up');
var status = jQuery('#status');
new AjaxUpload(btnUpload, {
action: 'uploadSample.php',
name: 'uploadfile',
onSubmit: function(file, ext) {
status.html('<img src="public/upload/ajax-loader.gif">');
},
onComplete: function(file, response) {
if (response === "success") {
$("#status").fadeOut();
$("#bb").val('[sample=' + url + file + ']');
$("#flash").html("<embed width='400' height='27' quality='best' src='public/upload/player.swf' flashvars='audioUrl=" + url + file + "' type='application/x-shockwave-flash'>");
} else {
// run error code
}
}
});
});
小提琴(如果需要):http://jsfiddle.net/Nn5gG/1/
答案 0 :(得分:1)
将输出链接的代码行更改为以下内容:
$("#flash").html("<embed width='400' height='27' quality='best' src='public/upload/player.swf' flashvars='audioUrl=" + url + file.replace(' ', '_') + "' type='application/x-shockwave-flash'>");
告诉javascript用下划线替换filenme中的任何空格。
另一个解决方案是确保PHP返回的文件名在返回输出之前已经过了空格替换。
答案 1 :(得分:0)
文件名仍然是原始文件名,因为你的php对你的js没有影响。您可以在响应中返回文件名,也可以替换js中的空格。