phpチュートリアル 設定内のupload_tmp_dirパラメータが比較され、ファイルがこのディレクトリにある場合は、move_uploaded_fileが移動操作を実行します。さらに、この比較では大文字と小文字が区別され、Windows では / も異なります。 PHP 構成ファイルが解析されると、realpath 関数が呼び出されます。つまり、move_uploaded_file を実行する前に、$file['tmp_name'] = realpath($file['tmp_name']); を 1 回設定する必要があります。
誰もが注意すべきもう 1 つの状況があります。つまり、move_uploaded_file がアクセスできないパスとして設定されている場合、どのように処理しても、move_uploaded_file はファイルを正常に移動できません。
ファイルをアップロードする場合、move_uploaded_file 関数を使用してファイルを移動することはできませんが、コピーまたは名前の変更を使用することはできます。
私も迷ってしまいました。ドキュメントではかなり曖昧ですが、ファイルが http post でアップロードされたかどうかを確認するステップを追加する関数 move_uploaded_file です
次に、インターネット上でファイル アップロード クラスを見つけました
**。クラス* */
class Upload_file
{
/**声明**/
var $upfile_type,$upfile_size,$upfile_name,$upfile;
var $d_alt,$extension_list,$tmp,$arri;
var $datetime,$date ;
var $filestr,$size,$ext,$check;
var $flash_directory,$extension,$file_path,$base_directory;
var $url; // ファイルのアップロードが成功した後にパスをジャンプします;
function Upload_file()
{
/**コンストラクタ**/
$this->set_url("index.php"); //アップロード成功後にジャンプパスを初期化します;
$this->set_extention();
$ this->set_size(50); //アップロード ファイルの KB 制限を初期化します;
$this->set_date(); ファイル名のプレフィックスを設定します;
$this->set_base_directory("attachmentfile");ファイルアップロードのルートディレクトリ名は変更可能です。 ;
}
/**ファイルの種類**/
function set_file_type($upfile_type)
{
$this->upfile_type = $upfile_type; //ファイルの種類を取得します;
}
/**ファイル名を取得* * /
function set_upfile_name($upfile_name)
{
$this->upfile_name = $upfile_name; //ファイル名を取得します;
}
/**ファイルを取得**/
function set_upfile($upfile)
{
$ this->upfile = $upfile; //サーバーに保存されているファイルの一時ファイル名を取得します;
}
/**ファイルサイズの取得**/
function set_file_size($upfile_size)
{
$this ->upfile_size = $upfile_size; //ファイル サイズを取得します;
}
/**ファイルのアップロードが成功した後のジャンプ パスを設定します**/
function set_url($url)
{
$this->url = $url;ファイルが正常にアップロードされた後のファイル サイズ ジャンプ パス;
}
/**ファイル拡張子を取得**/
function get_extention()
{
$this->extension = preg_replace('/.*.(.*[^ .].*)*/ iu','1',$this->upfile_name); // ファイル拡張子を取得;
}
/**ファイル名を設定**/
function set_datetime()
{
$ this->datetime = date ("ymdhis"); //時刻でファイル名を生成;
}
/**ディレクトリ名を設定**/
function set_date()
{
$this->date = date( "y-m-d"); // 日付でディレクトリ名を生成します;
}
/**初期化によりアップロードが許可されます許可されたアップロード ファイル タイプを初期化します**/
function set_extention()
{
$this->extension_list = "doc|xls|ppt|avi |txt|gif|jpg |jpeg|bmp|png"; //デフォルトでアップロードが許可されている拡張子名;
}
/**最大アップロード KB 制限を設定**/
function set_size($size)
{
$this-> ;size = $size; /アップロードできる最大ファイルサイズを設定します;
}
/**初期化ファイル格納ルートディレクトリ**/
function set_base_directory($directory)
{
$this->base_directory = $directory; /ファイルストレージのルートディレクトリを生成;
}
/**初期化ファイル格納サブディレクトリ**/
function set_flash_directory()
{
$this->flash_directory = $this->base_directory."/".$this-> date; //ファイルストレージサブルーチンディレクトリを生成;
}
/**エラー処理**/
function showerror($errstr="不明なエラー! "){
echo "";
exit();
}
/**ジャンプ**/
function go_to($str,$url)
{
echo "";
exit() ;
}/**ルートディレクトリが作成されていない場合は、ファイル格納ディレクトリ※を作成します*/
function mk_base_dir()
{
if (! file_exists($this->base_directory)){ //ルート ディレクトリが存在するかどうかを確認します;
@mkdir($this - >base_directory,0777); //存在しない場合は作成します;
}
}/**サブディレクトリが作成されていない場合は、ファイル格納ディレクトリ*を作成してください*/
print $ this->go_to("ファイルは正常にアップロードされました。 ",$this->url); //アップロードに成功しました;
function mk_dir()
{
if (! file_exists($this->flash_directory) )){ {
$this->ext =explode("|",$this->extension_list);//「|」を使用してデフォルトの拡張子を分解します;
}
/**アップロードが許可されている分解されたファイルタイプを配列形式で取得**/
function check_extention( )
{
for($i=0;each($this->ext);$i++) //配列を走査します;
{
if($this->ext[$i] = = strto lower($this ->extention)) // ファイル拡張子を比較して、デフォルトで許可されている拡張子と一致するかどうかを確認します。
- $this->check){$this->showerror("正しい拡張子が必要です".$this->extension_list." のいずれかになります!");}
// 一致しない場合は警告します
}
/**拡張機能が違反していないか確認してください**/
function check_size()
{
if($ this->upfile_size >round($this->size*1024)) //ファイル サイズがデフォルト サイズを超えているかどうか ;
{
$this->showerror("添付ファイルをアップロードすることはできません ".$this ->size."kb"); //超過した場合に警告;
}
}
/**ファイルサイズが規格を超えていないか確認※*/
function set_file_path()
{
$this->file_path = $this-> flash_directory."/".$this->datetime.".".$this->extension; //完全なファイル アクセス Path;
}
/**完全なファイル アクセス パス**/
function copy_file()
{
if(copy($this->upfile,$this->file_path)){ //ファイルをアップロード;}else {
} print $this->showerror("予期しないエラーが発生しました。もう一度お試しください!"); //アップロードに失敗しました;
}
}
/**ファイルをアップロード**/
function save()
{
$this->set_flash_directory(); //ファイルアップロードのサブディレクトリ名を初期化します;
$this->get_extention(); //ファイルを取得しますextension ;
$this->get_compare_extention(); //「|」を使用してデフォルトの拡張子を分解します;
$this->check_extention() // ファイル拡張子が違反しているかどうかを検出します;
$this-> ;check_size( ); // ファイルサイズが制限を超えているかどうかを確認します
$this->mk_base_dir(); // ルートディレクトリが存在しない場合は作成しますサブディレクトリが存在しない場合は、 ;
$this->set_file_path(); // ファイルへの完全なアクセス パスを生成します;
$this->copy_file() // ファイルをアップロードします;
}
}
1 2