ホームページ >バックエンド開発 >PHPチュートリアル >phpで画像をサーバーにアップロードする

phpで画像をサーバーにアップロードする

WBOY
WBOYオリジナル
2016-06-23 13:47:541262ブラウズ

$_FILES システム関数は PHP ファイルのアップロードで使用されます

1. $_FILES システム関数

PHP プログラミング言語での $_FILES システム関数の一般的な使用法は次のとおりです:

$_FILES['myFile'][ 'name '] クライアント ファイルの元の名前を表示します。
$_FILES['myFile']['type'] ファイルの MIME タイプ (「image/gif」など)。
$_FILES['myFile']['size'] アップロードされたファイルのサイズ (バイト単位)。
$_FILES['myFile']['tmp_name'] 保存される一時ファイルの名前。通常はシステムのデフォルトです。

2. 共通関数

PHP プログラミング言語における $_FILES システム関数の一般的な使用法は次のとおりです:

$_FILES['myFile']['name'] はクライアント ファイルの元の名前を表示します。

$_FILES['myFile']['type'] ファイルの MIME タイプ (「image/gif」など)。

$_FILES['myFile']['size'] アップロードされたファイルのサイズ (バイト単位)。

$_FILES['myFile']['tmp_name'] 保存される一時ファイルの名前。通常はシステムのデフォルトです。

$_FILES['myFile']['error'] ファイルアップロードに関するエラーコードです。さまざまなコードの意味は次のとおりです:

0; ファイルは正常にアップロードされました。

1; ファイル サイズが php.ini でシステムによって設定されたサイズを超えています。

2; ファイル サイズが MAX_FILE_SIZE オプションで指定された値を超えています。

3; ファイルの一部のみがアップロードされました。

4; ファイルはアップロードされませんでした。

5; アップロードされたファイルのサイズは 0 です。

3. PHP ファイルのアップロード

フォームを通じてファイルをアップロードするには、まず
enctype="multipart/form-data" method="post"> をマークする必要があります。以下の HTML コード:

<form action="setting.php" enctype="multipart/form-data" method="post">      <div class="left">        商家店铺名:<br/>        <input name="sjname" class="input1" type="text" ><br/>		联系电话:<br/>        <input name="sjphone" class="input1" type="text" ><br/>		QQ:<br/>        <input name="sjqq" class="input1" type="text" ><br/>        广告语:<br/>        <input name="sjad" class="input1" type="text" placeholder="20字以内" ><br/>      </div>      <div class="right">        上传封面图:(建议320*120)<br/>        <input type="text" readonly="readonly" name="file_name" id="file_name" class="fileinput"/>		<input type="file" name="img_file" style="display:none" onchange="file_change(this.value)"/>		<input type="button" value="浏 览" onclick="img_file.click();" name="get_file" class="liulan"/><br/>		商家简介:<br/>        <textarea name="sjbrief" class="textarea" placeholder="100字以内" ></textarea>      </div>      <div class="clear"> </div>        <p>        <input class="buttonsave" type="submit" value="保存设置" />|<a style='text-decoration:none;' href="binding.php?ac=del" target ="_top"><input class="buttonquit" type="button" value="解除AP绑定"/></a>        </p>      </form>
PHP コードは次のとおりです:

<?php/** * Created by PhpStorm. * User: funmi * Date: 14-9-10 * Time: 下午6:57 */include_once('./common.php');if($_SGLOBAL['login']==true){    $cover_pic = upload_store_pic();    $store_name = $_POST['sjname'];    $tel_number = $_POST['sjphone'];    $ad_words = $_POST['sjad'];    $store_introduce = $_POST['sjbrief'];    $qq_number = $_POST['sjqq'];    $setarr=array(        'cover_pic'=>$cover_pic,        'store_name'=>$store_name,        'tel_number'=>$tel_number,        'ad_words'=>$ad_words,        'store_introduce'=>$store_introduce,        'qq_number'=>$qq_number    );    updatetable(tname('open_member_weixin_ap'),$setarr,array('apid'=>$_COOKIE['apid'],'id'=>$_COOKIE['id']));    $smarty->assign('loginuser',$_COOKIE['loginuser']);    $smarty->display('setting.dwt');    exit();}gourl('binding.php');function upload_store_pic(){    //文件保存路径    $save_path = './uploads/store_pic/';    if (!file_exists($save_path)) {        mkdir($save_path);    }    //定义允许上传的文件扩展名    $ext_arr = array(        'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp')    );    //最大文件大小    $max_size = 1000000;    //PHP上传失败    if (!empty($_FILES['img_file']['error'])) {        switch($_FILES['img_file']['error']){            case '1':                $error = '超过php.ini允许的大小。';                break;            case '2':                $error = '超过表单允许的大小。';                break;            case '3':                $error = '图片只有部分被上传。';                break;            case '4':                $error = '请选择图片。';                break;            case '6':                $error = '找不到临时目录。';                break;            case '7':                $error = '写文件到硬盘出错。';                break;            default:                $error = '未知错误。';        }        showmessage($error);        return '';    }    //有上传文件时    if (empty($_FILES) === false) {        //原文件名        $file_name = $_FILES['img_file']['name'];        //服务器上临时文件名        $tmp_name = $_FILES['img_file']['tmp_name'];        //文件大小        $file_size = $_FILES['img_file']['size'];        //检查文件名        if (!$file_name) {            showmessage("请选择文件。");            return '';        }        //检查目录        if (@is_dir($save_path) === false) {            showmessage("上传目录不存在。");            return '';        }        //检查目录写权限        if (@is_writable($save_path) === false) {            showmessage("上传目录没有写权限。");            return '';        }        //检查是否已上传        if (@is_uploaded_file($tmp_name) === false) {            showmessage("上传失败。");            return '';        }        //检查文件大小        if ($file_size > $max_size) {            showmessage("上传文件大小超过限制。");            return '';        }        //检查目录名        $dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']);        if (empty($ext_arr[$dir_name])) {            showmessage("目录名不正确。");            return '';        }        //获得文件扩展名        $temp_arr = explode(".", $file_name);        $file_ext = array_pop($temp_arr);        $file_ext = trim($file_ext);        $file_ext = strtolower($file_ext);        //检查扩展名        if (in_array($file_ext, $ext_arr[$dir_name]) === false) {            showmessage("上传文件扩展名是不允许的扩展名。");            return '';        }        //新文件名        $new_file_name = date("YmdHis") . '_' . rand(10000, 99999) . '_apid_' . $_COOKIE['apid'] . '.' . $file_ext;        //移动文件        $file_path = $save_path . $new_file_name;        if (move_uploaded_file($tmp_name, $file_path) === false) {            showmessage("上传文件失败。");            return '';        }        @chmod($file_path, 0777);        return $file_path;    }else{        return '';    }}


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