Blogger Information
Blog 35
fans 0
comment 1
visits 42797
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
0419 ajax实现文件上传
魏先生的博客
Original
765 people have browsed it
<meta charset='utf-8'>
<?php
//r为只读 无法创建文件  r+()可以读和写
//打开成功会返回一个文件资源,水太深,老师说先不说
//$fn = fopen('test.txt','r') or die('打开失败,没有找到test.txt文件');
//$fn2 = fopen('test.txt','w') or die('创建test.txt失败');
//$fn3 = fopen('test3.txt','a') or die('创建test.txt失败');

//用fopen()可以打开外部的链接
$fn3 = fopen('http://ent.163.com/18/0423/21/DG3U1EG400038FO9.html','r') or die('创建test.txt失败');

//while($s=fgets($fn3)){//fgets()函数从远程或者本地文件指针中读取一行出来
//    print $s;
//}
//fgetss 去掉获取页面的标签
//while($s=fgetss($fn3)){//fgets()函数从远程或者本地文件指针中读取一行出来
//    print $s;
//}

//file_get_contents('文件');读取文件到字符串
//$con = file_get_contents('test.txt');
//echo $con.'<br>';
//echo strlen($con).'<br>';
//echo mb_strlen($con,'utf8');
$arr = file('test3.txt');//file()这个函数很强大,可以读古诗
//echo '<pre>';
//    print_r($arr);
//foreach($arr as $key=>$value){
//    echo $key.':'.$value;
//}
//shuffle($arr);//shuffle打乱的函数
//print_r($arr);
//if(shuffle($arr)){
////    echo $arr[0];
//  echo current($arr);//current返回一个数组中的值
//}
//array_rand返回的是键名
$keys = array_rand($arr,3);//随机数3个
foreach($keys as $value){//遍历出来
    print $arr[$value].'<br>';
}

文件的操作.读写,随机选取

<meta charset="UTF-8"/>
<?php
/*
 * 目录的遍历操作:
 * 传统过程函数 opendir();readdir();colsedir();分别是打开读取关闭
 * 目录扫描器scandir();
 */
//$open = opendir('../0419') or die('打开失败');
//while(false != ($file = readdir($open))){
//    if($file != '.' && $file !='..'){
//        print $file.'<br>';
//    }
//}
//colsedir($open);
$sctrr = scandir('../0419/');
//echo '<pre>';
//print_r($sctrr);
foreach($sctrr as $value){
    if($value != '.' && $value !='..'){
        echo $value.'<br>';
    }
    
}

目录的遍历.用到很直观的函数,opendir(),readdir(),colsedir();和目录扫描器scandir();

<meta charset="UTF-8"/>
<?php
    //__FILE__系统常量
echo __FILE__."<br>";
     //basename()文件名
echo basename(__FILE__)."<br>";     
//获取目录名,不包含文件本身
echo dirname(__FILE__)."<br>";
//3.pathinfo();将目录名,文件名,扩展或者解析分成数组
$pathinfo = pathinfo(__FILE__);
echo "目录名".$pathinfo['dirname'].'<br>';
echo "文件名".$pathinfo['basename'].'<br>';
echo "文件名".$pathinfo['extension'].'<br>';    
//php中没有提供将这三个部分组成一个完整文件名的函数
//因为windows与unix上的目录分隔符不同
//windows是正斜线:/ , unix/linux上的是反斜线\
//所以系统提供一个常量:DIRECTORY_SEPARATOR,可以根据系统自动确定路径分隔符类型
$path = dirname(__FILE__).DIRECTORY_SEPARATOR.basename(__FILE__);
echo $path,'<br>';

获取文件的地址,文件名等等 函数pathinfo(),可以将文件等解析成数组.

<meta charset="UTF-8"/>
<?php
//文件删除
//unlink('new_file.css') or die('无法删除new_file.css');
//复制内容1替换到内容2里   0419为父级,..为爷爷级
//copy('test3.txt','../0419/maxim.txt') or die('复制失败');
//rename改名 二个参数在同一目录下
//rename('ceshi.txt','test.txt') or die('修改失败');//第一个为要改的原文件,第二个参数是修改后的名字
//rename() //移动文件,两个参数不在一个目录下
//rename('test3.txt','../0419/maxim.txt') or die('移动失败');
//创建目录
//mkdir('mulu2') or die('创建失败');
//移动到mulu的空文件夹
//rename('test.txt','mulu/test.txt') or die('移动失败');
//清除目录
//rmdir('mulu2') or die('删除文件失败');

文件的操作比较语义化 :unlink:删除 2.rename:该文件名或移动 3.copy:复制 4. mkdir创建目录 5.rmdir:删除目录


<meta charset="UTF-8"/>
<!--
//文件上传必须是 POST方式method
//允许上传的类型必须是:multipart/form-data
//action可以是空,可以是当前文件名,但是最安全的是
-->
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" id="" value="542488" />
<fieldset>
<legend align="center">文件上传</legend>
<p><strong>选择文件:</strong><input type="file" name="upload"/></p>
</fieldset>
<p align="center"><input type="submit" name="submit" value="上传"/></p>
</form>
<!--
$_FILES['file']['name']:原始文件名
$_FILES['file']['type']:文件类型
$_FILES['file']['size']:文件大小
$_FILES['file']['tmp_name']:临时文件夹
$_FILES['file']['error']:上传错误代码
-->
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){//检查是否用post提交的
if(isset($_FILES['upload']) ){
//设置允许上传文件的类型
$allow = ['image/jpg','image/jpep','image/png'];
//判断用户是否上传了正确的图片
if(in_array($_FILES['upload']['type'],$allow)){
//将文件添加到临时文件
if(move_uploaded_file($_FILES['upload']['tmp_name'],"upload/{$_FILES['upload']['name']}"))
{
echo "<script>alert('上传成功')</script>";
}else{
echo "<script>alert('上传失败')</script>";
}
}else{
echo '文件类型错误';
}
}
//对上传错误进行处理
if ($_FILES['upload']['error'] > 0 ) {
echo '<p>错误原因是:<strong>';
switch ($_FILES['upload']['error']) {
case 1:
echo '文件超过了php.ini配置中设置的大小';
break;
case 2:
echo '文件超过了表单中常量设置的大小';
break;
case 3:
echo '仅有部分文件被上传';
break;
case 4:
echo '没有文件被上传';
break;
case 6:
echo '没有可用的临时文件夹';
break;
case 7:
echo '磁盘已满,写入失败';
break;
case 8:
echo '上传意外中止';
break;
default:
echo '系统未知错误';
break;
}
echo '</strong></p>';
//保险起见,最好把创建的临时文件删除,当然系统也会在结束会话时自动清空
if (file_exists($_FILES['upload']['tmp_name']) && is_file($_FILES['upload']['tmp_name'])) {
unlink($_FILES['upload']['tmp_name']);
}
}
}else{
echo '1';
}
?>

上面为未ajax上传的代码

实例

<meta charset="UTF-8"/>
<!--
	//文件上传必须是 POST方式method
	//允许上传的类型必须是:multipart/form-data
	//action可以是空,可以是当前文件名,但是最安全的是
-->
<form method="POST" enctype="multipart/form-data">
	<!--隐藏的input-->
	<input type="hidden" name="MAX_FILE_SIZE" id="" value="542488" />
	<fieldset>
		<legend align="center">文件上传</legend>
		<p><strong>选择文件:</strong><input type="file" name="upload"/></p>
		
	</fieldset>
	<p align="center"><input type="submit" name="submit" value="上传"/></p>
	<span></span>
</form>
<script type="text/javascript" src="jquery-3.2.1.min.js" ></script>
<script>
	//form提交链接上
	window.onload = function(){
		var frm = document.getElementsByTagName('form')[0];
		frm.onsubmit = function(evt){
			//收集文件
			var frmevent = new FormData(frm);
			//ajax开始做
		    var req = new XMLHttpRequest();
			req.onreadystatechange = function(){
				if(req.readyState == 4){
					alert(req.responseText);//打印信息
					$("span").text(req.responseText)
				}
			}
			req.open('POST','file.php');//传输格式,要传的服务器
			req.send(frmevent);//发送
			evt.preventDefault();//阻止跳转
		}
		
	}
	
</script>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php

//$_FILES['file']['name']:原始文件名
//$_FILES['file']['type']:文件类型
//$_FILES['file']['size']:文件大小
//$_FILES['file']['tmp_name']:临时文件夹
//$_FILES['file']['error']:上传错误代码

if($_SERVER['REQUEST_METHOD'] == 'POST'){//检查是否用post提交的
	if(isset($_FILES['upload']) ){
		//设置允许上传文件的类型
		$allow = ['image/jpg','image/jpep','image/png'];
		//判断用户是否上传了正确的图片
		if(in_array($_FILES['upload']['type'],$allow)){
			//将文件添加到临时文件
			if(move_uploaded_file($_FILES['upload']['tmp_name'],"upload/{$_FILES['upload']['name']}"))
			{
				echo "上传成功";
			}else{
				echo "上传失败";
			}
			
		}else{
			echo '文件类型错误';
		}
		
	}
	//对上传错误进行处理
		if ($_FILES['upload']['error'] > 0 ) {
			echo '<p>错误原因是:<strong>';

			switch ($_FILES['upload']['error']) {
				case 1:
					echo '文件超过了php.ini配置中设置的大小';
					break;
				case 2:
					echo '文件超过了表单中常量设置的大小';
					break;
				case 3:
					echo '仅有部分文件被上传';
					break;
				case 4:
					echo '没有文件被上传';
					break;
				case 6:
					echo '没有可用的临时文件夹';
					break;
				case 7:
					echo '磁盘已满,写入失败';
					break;
				case 8:
					echo '上传意外中止';
					break;
				
				default:
					echo '系统未知错误';
					break;
			}

			echo '</strong></p>';
			//保险起见,最好把创建的临时文件删除,当然系统也会在结束会话时自动清空
			if (file_exists($_FILES['upload']['tmp_name']) && is_file($_FILES['upload']['tmp_name'])) {
				unlink($_FILES['upload']['tmp_name']);
			}
		}
	
}else{
	echo '1';
}


?>

运行实例 »

点击 "运行实例" 按钮查看在线实例


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post