5

私のサイトメンバーが顧客が聞くために彼らの作曲の短いサンプルをアップロードすることを可能にする基本的なスクリプトを持っています。

一部のファイル名にはスペースがあり、サンプルを再生しようとすると明らかに問題が発生します。一時ディレクトリへのアップロードとファイルの「サンプル」ディレクトリへの移動の間に、これらのスペースをアンダースコアに置き換える方法はありますか?

<?
            $url = "http://domain.com/uploads/samples/";
            //define the upload path
            $uploadpath = "/home/public_html/uploads/samples";
            //check if a file is uploaded
             if($_FILES['userfile']['name']) {
              $filename = trim(addslashes($_FILES['userfile']['name']));
            //move the file to final destination
              if(move_uploaded_file($_FILES['userfile']['tmp_name'],
            $uploadpath."/". $filename)) {

              echo "

    bla bla bla, the final html output

            ";

              } else{
                if ($_FILES['userfile']['error'] > 0)
              {
                   switch ($_FILES['userfile']['error'])
                {
                  case 1:  echo 'File exceeded upload_max_filesize';  break;
                  case 2:  echo 'File exceeded max_file_size';  break;
                  case 3:  echo 'File only partially uploaded';  break;
                  case 4:  echo 'No file uploaded';  break;
                }
                exit;
              }
              }
            }
?>
4

3 に答える 3

13

この行の後:

$filename = trim(addslashes($_FILES['userfile']['name']));

書く:

$filename = str_replace(' ', '_', $filename);

hello world.mp3(2つのスペース)のようなファイル名はhello__world.mp3(2つのアンダースコア)として出力されます。これを回避するには、代わりに次のようにします。

$filename = preg_replace('/\s+/', '_', $filename);
于 2012-05-15T17:34:06.107 に答える
0
$filename = str_replace(' ', '-', trim(addslashes($_FILES['userfile']['name'])));

なぜaddslashesですか?これも少し単純すぎるようです-私は何かが欠けていますか?

于 2012-05-15T17:34:32.003 に答える
0

試す;

$filename = trim(str_replace(" ","_", $_FILES['userfile']['name']));
于 2012-05-15T17:39:50.930 に答える