ホームページ  >  記事  >  バックエンド開発  >  php 中国語ファイルのアップロードに関連する問題を解決する

php 中国語ファイルのアップロードに関連する問題を解決する

WBOY
WBOYオリジナル
2016-06-13 13:08:141087ブラウズ

php
で中国語ファイルをダウンロードする問題を解決する

次の関数は、ダウンロードされたファイル (中国語、英語などを含む) が PHP に存在するかどうかを確認するもので、存在しない場合は、元の名前でダウンロードされます。もちろん、サーバー名もカスタマイズできます。

まず、Web サイトのディレクトリは次のとおりであることに注意してください。

/

....down.html

....sphinx 技術交換.zip

....リブ

???…download.php

?

もちろん、Web サイトの相対パスと絶対パスを知っている場合は、ディレクトリのレイアウトを理解してソース プログラムを直接見る必要はありません。

?

ファイル名: down.html ダウンロードページ




<メタ http-equiv="Content-Type" content="text/html; charset=utf-8" />
ダウンロード センター









?

ファイル名は次のとおりです: download.php はダウンロード プログラム ページを処理します

header("Content-Type:text/html;charset=utf-8");

$fn = urldecode($_REQUEST['fn']);? //ファイル名(パッケージ拡張子を含む)をデコードします
//ダウンロード名が元の名前かカスタマイズされた名前かを判断します
if(!empty($_REQUEST['savefn'])){
?? ? $savefn = urldecode($_REQUEST['savefn']);? //ダウンロード時に表示されるファイル名(拡張子を除く)をデコードします
??? $fnArr =explode('.',$fn);
???$savefn = $savefn.".".$fnArr[count($fnArr)-1];? //utf-8 を GB2312 に変換します
}else{
??? = $fn;? //ダウンロード時に表示されるファイル名として元のファイル名を使用します
}
$fn = iconv('UTF-8','GB2312//IGNORE',$fn);? //utf-8 を GB2312 に変換します
$fp = '../'.$fn; //ファイルをダウンロードするパス ($fp = に変更された場合) 'http://localhost/'.$fn; 相対パスを使用し、ルート ディレクトリから直接移動することをお勧めします

if (!is_file($fp)) // ファイルが存在するかどうかを確認します
??? echo "";
??? 終了;
} else {
??? iconv('UTF-8','GB2312//IGNORE',$savefn);
??? $file = fopen($fp,"r"); ファイル
??? header("Content-type: application/octet-stream") を開きます。 header("Accept-Range: バイト");
??? header("Accept-Length: ".filesize($fp));
??? header("Content-Disposition:attachment; filename=" . $savefn); #ダウンロード時に表示されるファイル名
??? echo fread($file,filesize($fp));
???終了;
}
?>



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。