ホームページ  >  記事  >  php教程  >  PHP はページを更新せずにファイルをアップロードする機能を実装します

PHP はページを更新せずにファイルをアップロードする機能を実装します

大家讲道理
大家讲道理オリジナル
2017-03-24 15:27:272398ブラウズ

htmlパート

index.html

<title>无刷新上传文件</title>
<meta content-type="text/html" charset="utf-8">
<script type="text/javascript">
function startUpload() {
document.getElementById(&#39;processing&#39;).innerHTML = &#39;loding...&#39;;
return true;
}
function stopUpload(rel){
var msg;
switch (rel) {
case 0:
msg = "上传成功";
break;
case 1:
msg = "上传的文件超过限制";
break;
case 2:
msg = "只能上传图片文件";
break;
default:
msg = "上传文件失败";
}
document.getElementById(&#39;processing&#39;).innerHTML = msg;
}
</script>
<p style="text-align:center">
</p><p id="processing"></p>
<form action="upload.php" method="post" enctype="multipart/form-data" target="form-target" onsubmit="startUpload();">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
<input type="file" name="myfile">
<input type="submit" name="sub" value="上传">
</form>
<iframe style="width:0; height:0; border:0;" name="form-target"></iframe>
<p></p>

PHPパート

upload.php

<!--?php
sleep(2);
$fileTypes = array(&#39;jpg&#39;,&#39;png&#39;,&#39;gif&#39;,&#39;bmp&#39;);
$result = null;
$uploadDir = &#39;./upload&#39;;
$maxSize = 1 * pow(2,20);
if ($_SERVER[&#39;REQUEST_METHOD&#39;] == &#39;POST&#39; && isset($_POST[&#39;sub&#39;])) {
$myfile = $_FILES[&#39;myfile&#39;];
$myfileType = substr($myfile[&#39;name&#39;], strrpos($myfile[&#39;name&#39;], ".") + 1);
if ($myfile[&#39;size&#39;] --> $maxSize) {
$result = 1;
} else if (!in_array($myfileType, $fileTypes)) {
$result = 2;
} elseif (is_uploaded_file($myfile[&#39;tmp_name&#39;])) {
$toFile = $uploadDir . &#39;/&#39; . $myfile[&#39;name&#39;];
if (@move_uploaded_file($myfile[&#39;tmp_name&#39;], $toFile)) {
$result = 0;
} else {
$result = -1;
}
} else {
$result = 1;
}
}
?>
<script type="text/javascript">
window.top.window.stopUpload(<?php echo $result; ?>);
</script>

関連記事:

thinkphp3.2.3のアップロードファイルパスの取得方法

Thinkphp3.2.3 phpqrcode を統合するQR コードの共有サンプル コードを 2 つ生成します

PHP は、ページを更新せずにファイル アップロードを実装します

HTML5 を使用して非同期ファイル アップロードを実装し、クロスドメインをサポートし、アップロードの進行状況バーを備えています

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