0

我已经搜索了这个网站,但似乎找不到答案。我有一个简单的 AjaxUpload 脚本,用于上传 10 秒的音频样本,然后将上传的文件显示为 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/

4

2 回答 2

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 传回的文件名在返回输出之前已经进行了空格替换。

于 2012-07-06T13:14:36.547 回答
0

文件名仍然是原始文件名,因为您的 php 对您的 js 没有影响。您可以在响应中返回文件名,也可以替换 js 中的空格。

于 2012-07-06T13:15:39.013 回答