|
1. アップロードフォームより情報の収集 |
2. アップロード環境の設定 |
3. 実際のアップロード |
4. ファイルの拡張子のチェック |
5. 画像ファイルをサイズ変更してアップロードする |
<HTML><HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=shift_jis"> </HEAD> <BODY> <FORM enctype="multipart/form-data" action="<?= basename($_SERVER['SCRIPT_NAME']) ?>" method="POST" > <INPUT type="hidden" name="MAX_FILE_SIZE" value="30000"> アップロードするファイル : <INPUT name="MyUploadFile" type="file" style='width:400'> <INPUT type="submit" value="アップロード"> </FORM> <PRE> <? print_r( $_FILES ); ?> </PRE> </BODY></HTML>
Array
(
[MyUploadFile] => Array
(
[name] => sqlwin144a.lzh
[type] => application/octet-stream
[tmp_name] => C:\DOCUME~1\lightbox\LOCALS~1\Temp\php5A.tmp
[error] => 0
[size] => 16492
)
)
Array
(
[MyUploadFile] => Array
(
[name] => sqlwin144a.lzh
[type] =>
[tmp_name] =>
[error] => 2
[size] => 0
)
)
php.ini |
---|
|
名前 | デフォルト | 説明 | |
---|---|---|---|
1 | file_uploads |
"1" |
HTTP ファイルアップロードを 有効とするかどうか |
2 | upload_tmp_dir | NULL |
ファイルアップロード時にフ ァイル保存に用いるテンポ ラリディレクトリ |
3 | upload_max_filesize | "2M" |
アップロードされるファイル の最大サイズ |
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=shift_jis">
</HEAD>
<BODY>
<FORM
enctype="multipart/form-data"
action="<?= basename($_SERVER['SCRIPT_NAME']) ?>"
method="POST"
>
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
アップロードするファイル :
<input name="MyUploadFile" type="file" style='width:400'>
<input type="submit" value="アップロード">
</FORM>
<PRE>
<?
if ( $_SERVER['REQUEST_METHOD'] == "POST" ) {
$upload = "D:\\LOCALWEB\\phpmaterial\\upload\\";
$upload .= $_FILES['MyUploadFile']['name'];
if ( move_uploaded_file( $_FILES['MyUploadFile']['tmp_name'], $upload ) ) {
print "アップロードに成功しました\n";
}
else {
print "アップロードに失敗しました\n";
}
}
?>
</PRE>
</BODY></HTML>
<PRE> <? if ( $_SERVER['REQUEST_METHOD'] == "POST" ) { $target = $_FILES['MyUploadFile']['name']; $target = strtoupper($target); $ext = array("JPG","JPEG","PNG"); $file_ok = false; foreach( $ext as $Value ) { $target2 = basename( $target, $Value ); if ( strlen( $target2 . $Value ) == strlen( $target ) ) { $file_ok = true; break; } } if ( $file_ok ) { $upload = "D:\\LOCALWEB\\phpmaterial\\upload\\"; $upload .= $_FILES['MyUploadFile']['name']; if ( move_uploaded_file( $_FILES['MyUploadFile']['tmp_name'], $upload ) ) { print "アップロードに成功しました\n"; } else { print "アップロードに失敗しました\n"; } } else { print "アップロード対象ファイルではありません\n"; } } ?> </PRE>
GD2ライブラリの使用 |
---|
|
<HTML><HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=shift_jis"> </HEAD> <BODY> <FORM enctype="multipart/form-data" action="<?= basename($_SERVER['SCRIPT_NAME']) ?>" method="POST" > <input type="hidden" name="MAX_FILE_SIZE" value="500000"> アップロードするファイル : <input name="MyUploadFile" type="file" style='width:400'> <input type="submit" value="アップロード"> </FORM> <PRE> <? if ( $_SERVER['REQUEST_METHOD'] == "POST" ) { $target = $_FILES['MyUploadFile']['name']; $target = strtoupper($target); $ext = array("JPG","JPEG","PNG"); $file_ok = false; foreach( $ext as $Value ) { $target2 = basename( $target, $Value ); if ( strlen( $target2 . $Value ) == strlen( $target ) ) { $file_ok = true; break; } } if ( $file_ok ) { if ( is_uploaded_file( $_FILES['MyUploadFile']['tmp_name'] ) ) { ImageConvert( ); } else { print "アップロードに失敗しました\n"; } } else { print "アップロード対象ファイルではありません\n"; } } # ********************************************************** # アップロードされたファイルを縮小して保存 # ********************************************************** function ImageConvert() { $upload = "D:\\LOCALWEB\\phpmaterial\\upload\\"; $upload .= $_FILES['MyUploadFile']['name']; # テンポラリディレクトリにある実際のファイル $file = $_FILES['MyUploadFile']['tmp_name']; # ファイルの属性等を取得 $target = getimagesize( $file ); # 現在のサイズ $width = $target[0]; $height = $target[1]; # 新しいサイズ $width_new = 200; $height_new = (int)( ($height/$width)*$width_new ); # JPEG の場合 if ( $target[2] == IMAGETYPE_JPEG ) { # 元のファイルのハンドル $jpeg = imagecreatefromjpeg ( $file ); # 新しいイメージ $jpeg_new = imagecreatetruecolor( $width_new, $height_new ); # サイズ変更して新しいイメージへ転送 $ret = imagecopyresampled( $jpeg_new, $jpeg, 0, 0, 0, 0, $width_new, $height_new, $width, $height ); if ( !$ret ) { print "サイズ変更に失敗しました\n"; return; } # JPEG ファイルとして、クオリティ 100 で出力 $ret = imagejpeg ( $jpeg_new, $upload, 100); if ( !$ret ) { print "ファイル作成に失敗しました\n"; return; } print "アップロードが完了しました\n"; print "<IMG src='upload/{$_FILES['MyUploadFile']['name']}'>"; return; } # PNG の場合 if ( $target[2] == IMAGETYPE_PNG ) { $png = imagecreatefrompng( $file ); $png_new = imagecreatetruecolor( $width_new, $height_new ); $ret = imagecopyresampled( $png_new, $png, 0, 0, 0, 0, $width_new, $height_new, $width, $height ); if ( !$ret ) { print "サイズ変更に失敗しました\n"; return; } $ret = imagepng ( $png_new, $upload ); if ( !$ret ) { print "ファイル作成に失敗しました\n"; return; } print "アップロードが完了しました\n"; print "<IMG src='upload/{$_FILES['MyUploadFile']['name']}'>"; return; } print "アップロード対象ファイルではありません\n"; } ?> </PRE> </BODY></HTML>