0
<?php
    require '../config.php';
   // Edit upload location here   
   $result = 0;
   $name = mysql_real_escape_string($_FILES['myfile']['name']);
   $path = csv;
   $ext = 'csv';
   $md5 = md5($name);
   $target_path = $path . '\\' . $md5 . '.' . $ext;

   if(move_uploaded_file($_FILES['myfile']['tmp_name'], $target_path)) {
      $result = 1;
   }

   sleep(1);


?>

ブラケットなどを含むファイル名などのファイルはアップロードされません。

4

3 に答える 3

2

してはいけないこと:

$name = mysql_real_escape_string($_FILES['myfile']['name']);

行う:

$name = $_FILES['myfile']['name'];

$name の MD5 を取得しているので、特殊文字を含まない 32 文字の 16 進文字列が生成されるため、クリーンアップする必要はありません。ファイル名に特殊文字が含まれていて、上記を使用してエスケープすると、MD5 は完全に変更されます。

于 2012-12-14T23:52:27.810 に答える
1

エラーはおそらくここにあります:

$path = csv;

ここで、PHP は name を持つ定数を探しcsvます。それを定義していない限り、null が返されるため、$target_path正しく構築されていません。

于 2012-12-14T23:46:37.633 に答える
0

$target パスを構築する際に、事前に定義された DIRECTORY_SEPERATOR 定数を使用することをお試しください。

$target_path = $path . DIRECTORY_SEPERATOR . $md5 . '.' . $ext;
于 2012-12-15T00:04:36.040 に答える