专注于高品质PHP技术等信息服务于一体 [STIEMAP] [RSS]

百度提供的广告:
PHP
当前位置:首页 > 技术文档 > PHP >  > 
UNIX 中文文件转到 WINDOWS 平台文件名错乱

网站最早是放在UNIUX 空间里面,由于用户可以上传的图片有中文的图片,使用FTP 登录查看,也都是乱码。无法直接下载的WINDOWS 上来。首先是使用 ZIP 打包,在WINDOWS 平台上解压,这样文件名还是乱码的。

原来想用 IIS 7 rewrite 把原来用户上传的图片进行重定向到老的UNIUX 空间上面。是一种不错的解决方法。

后来经测试发现可以使用 PHP 读取图片文件,在输出的方式,这种方法没想到居然可以。。

reWrite 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
         <rewrite>                                       
            <rules>                                       
                <rule name="one" stopProcessing="true">                                       
                     <match url="^uploads/(.*)" />                                       
                     <action type="Rewrite" url="Rewrite.php?url=/{R:1}" />                                       
                </rule>                                   
            </rules>                                       
        </rewrite>   
    </system.webServer>
</configuration>

 

Rewrite.php

<?php
/* WINDOWS UNIX 中文图片不存在解析方案 power:清如许 date:2011-10-26 */
$url = $_GET['url'];
if(file_exists("uploads/$url"))
{
    echo echo_img("uploads/$url");
}
else
{
    echo 'not exists';
}

/** 读取图片输出
*/
function echo_img($img)
{
    $fileres = file_get_contents($img);
    header('Content-type: image/jpeg');
    echo $fileres;
}

?>

file_get_contents()  会对文件名进行 UTF-8 转换。所以图片就可以显示正确了。