博客列表 >0419 ajax实现文件上传

0419 ajax实现文件上传

魏先生的博客
魏先生的博客原创
2018年04月24日 17:43:48760浏览
<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';
}


?>

运行实例 »

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


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议