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 字符的十六进制字符串,无论如何都不会包含任何特殊字符。如果文件名包含特殊字符并且您使用上述转义,则 MD5 将完全改变。

于 2012-12-14T23:52:27.810 回答
1

错误可能在这里:

$path = csv;

这里 PHP 正在寻找一个带有名称的常量,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 回答