编码上传文件的名称

时间:2016-03-27 21:39:27

标签: php apache file-upload

我有一个shell帐户,我在那里创建了一个文件上传器。它有两个文件。的 upload.html

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Send</title>
</head>

<body>
    <form enctype="multipart/form-data" action="upload.php" method="POST">
        <input name="thefile" type="file" /><br>
        <input type="submit" value="Send" />
    </form>
</body>
</html>

upload.php

<?php
header('Content-Type: text/html; charset=utf-8');

$thefile_tmp = $_FILES['thefile']['tmp_name'];
$thefile_name = $_FILES['thefile']['name'];

if(is_uploaded_file($thefile_tmp)) {
    move_uploaded_file($thefile_tmp, "files/$thefile_name");
}
?>

一切正常,但我希望能够在我的电脑上使用上传器(Windows 7)。所以我按照这个tutorial安装了Apache24和php7。然而,我注意到,当我上传带有光泽字符的文件(我需要它们)时,它会将它们更改为一些奇怪的符号。我找到了一个解决方案here。即我将 upload.php 更改为

<?php
header('Content-Type: text/html; charset=utf-8');

$thefile_tmp = $_FILES['thefile']['tmp_name'];
$thefilename = $_FILES['thefile']['name'];
$thefile_name = iconv("utf-8", "ISO-8859-2", $thefilename);

if(is_uploaded_file($thefile_tmp)) {
    move_uploaded_file($thefile_tmp, "files/$thefile_name");
}
?>

我的compluter一切正常。但是,当我在我的shell帐户上添加 upload.php 时,它会将波兰字符更改为奇怪的符号。

我推断出这种不匹配是由于服务器的php配置造成的。

  

所以我想更改计算机上的配置,以便第一个版本的 upload.php 能够正常工作。

我在我的shell帐户中查看了 phpinfo(),并尝试在我的计算机 phpinfo()上设置类似的设置。

我尝试更改核心中的 default_charset ,但它没有帮助。

我还尝试更改 iconv.input_encoding,iconv.internal_encoding, iconv.output_encoding 。这些都没有帮助。

我失去了很多选择。

版本信息

我的shell帐户:

  • PHP版 5.4.45-0 + deb7u2
  • SERVER_SOFTWARE Apache / 2.2.22(Debian)

我的电脑:

  • PHP版 7.0.5RC1
  • SERVER_SOFTWARE Apache / 2.4.18(Win64)PHP / 7.0.5RC1

0 个答案:

没有答案