带有亚洲字符的move_uploaded_file上传到名称错误的文件夹

时间:2014-08-25 18:36:41

标签: php flash

我正在尝试建立一个可以上传flash .swf文件的网站。除了用户上传带有日语或任何其他亚洲字符的flash文件名(用日语字符测试)之外,它的效果很好,除非用户名字错误。

所以这是文件: enter image description here

在开始移动文件之前,我将信息放入数据库中 数据库:

  

flash_id | flash_name |不相关| flash_size | flash_date

enter image description here

将闪存信息放入数据库后,我将文件从tmp文件夹移动到我存储上传文件的另一个文件夹。 enter image description here

如果将前两张图片中的文件名与第三张图片进行比较,则可以看出它们不一样。

以下是代码:

下面的变量map,filename和ext是移动过程中使用的值。

$map = 62;
$filename = $_FILES['upfile']['name'];
$ext = swf;

$str = "../uploads/$map/$filename.$ext";

if (!move_uploaded_file(
        $_FILES['upfile']['tmp_name'],
        //sprintf('../uploads/%s/%s.%s',$map,$filename,$ext)
        $str
    )) {
        // Failed to move uploaded file.
        throw new RuntimeException(4);
    } else {
        try {
            $insq = $pdo->prepare('INSERT INTO flashes (flash_name, flash_size) VALUES (?,?)');
            $insq->bindParam(1, $filename);
            $insq->bindParam(2, $filesize);
            $insq->execute();
        } catch (PDOException $ex) {
            throw new RuntimeException(999);
        }
    }
    // File is uploaded successfully.
    echo 10;

1 个答案:

答案 0 :(得分:0)

我无法找到解决方案。因此,我没有尝试修复此问题,而是按照tttony的注释进行操作,以便将file_names随机化,并将随机化之前的file_name放入数据库中。所以我们可以在我们的网站上以原始名称显示它,但是当我们要下载它时,我们将收到一个随机的file_name。但是,如果您使用html download="original_file_name"属性,您仍然可以让用户使用原始file_name下载它。

相关问题