Скрипт AjaxUpload оставляет пробелы в именах файлов

Я искал этот сайт, и я не могу найти ответ. У меня есть простой скрипт AjaxUpload для загрузки 10-секундных аудиосэмплов, а затем отображение загруженного файла как в виде BBCode, так и в виде флеш-плеера (на той же странице). 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/


person Community    schedule 06.07.2012    source источник


Ответы (2)


Измените строку кода, в которой вы выводите ссылку, на следующую:

$("#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 заменить любые пробелы в файле символами подчеркивания.

Другое решение состоит в том, чтобы гарантировать, что имя файла, возвращаемое PHP, уже подверглось замене пробела перед возвратом вывода.

person hellsgate    schedule 06.07.2012
comment
Фантастический!. Мне пришлось изменить file.replace(' ', '_') на file.replace(/\s/g, '_'), чтобы убедиться, что все пробелы заменены. Спасибо! - person ; 06.07.2012

Имя файла по-прежнему остается оригинальным, потому что ваш php не влияет на ваш js. Вы можете вернуть имя файла в свой ответ или заменить пробелы в js.

person flec    schedule 06.07.2012