AjaxUpload脚本在文件名中留下空格

时间:2012-07-06 12:51:25

标签: jquery ajax-upload

我搜索了这个网站,似乎无法找到答案。我有一个简单的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/

2 个答案:

答案 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中的空格。