2016年3月25日金曜日

【PHP】ファイルのアップロードについて

cakePHPを使っておなじみな感じのCMS(コンテンツマネジメントシステム)を作っています。
以前お世話になっていた会社の取り扱い商品の情報をバイヤー向けにWeb上で
どんどん発信したいという要求にこたえるもの。

ファイルアップロード処理についてメモ:

【大きなサイズのファイルのアップロードに失敗する場合】
■PHPのタイムアウト設定を疑う
これはおなじみのPHP記述で対応。
set_time_limit(300);

■PHPのアップロードファイルサイズ容量制限設定を疑う
参考 : http://d.hatena.ne.jp/knowledgetree/20110217/1297939617
「php_value upload_max_filesize」だけでなく「php_value memory_limit」
「php_value post_max_size」もセットで気を付けること。
今回はPHPスクリプトからの設定はうまく動かず、.htaccessに記述したらうまく動いた。



【ZIPをサーバー上で解凍する場合】
複数の画像をZIPで一括でアップロードしたいという場合。
たぶん常套手段はZIP解凍用のディレクトリに一時的に解凍して、
ファイル名なんかをチェックしながら本番ディレクトリに移動するというものだろう。

普通に1ファイルずつファイルをアップロードする時と処理を共通化させたいので
通常アップロードメソッドに処理を回したらなかなかうまくいかない。

原因は、move_uploaded_file()関数を使っていたからで、ZIP解凍でサーバー上に出現した
ファイルをこの関数で移動することはできない。
ZIP解凍で出現したファイルを移動する場合はrename()関数を使うこと。

0 件のコメント:

コメントを投稿