0

このサイトを検索しましたが、答えが見つからないようです。10 秒のオーディオ サンプルをアップロードし、アップロードされたファイルを BBCode と Flash Player の両方として (同じページに) 表示するための単純な AjaxUpload スクリプトがあります。は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内のスペースをアンダースコアに置き換えるように指示します。

もう1つの解決策は、出力を返す前に、PHPによって返されるファイル名がすでにスペース置換されていることを確認することです。

于 2012-07-06T13:14:36.547 に答える
0

phpはjsに影響を与えないため、ファイル名は元のファイル名のままです。応答でファイル名を返すか、jsのスペースを置き換えることもできます。

于 2012-07-06T13:15:39.013 に答える