uploadify

uploadify,featured image

前两天有网友,问我,关于jquery uploadify处理后台的问题。说如何判断文件的存在?在这里璞玉为大家简单的分析一下uploadify后台处理程序的写法。

首先使用:

if (!empty($_FILES))

来判断是否有文件上次。如果有的话,接着去做接下来的事情,比如把上传的文件从临时文件移动到系统生成的保存文件夹中。如何判断文件的存在?这其实很简单。如果说您把上传的所以的文件都放在了一个大的目录里面(这点不可取,既不安全,又不利于查找。在linux系统下面,文件夹里面的文件超过1000个以后就明显的慢了很多。所以还是分开存储)。

如下:

$_FILES['Filedata']['name'];

根据上面那句话就能得出文件的名字。然后用file_exists去判断是否存在即可、

不过在这里重点说下uploadify后台的处理写法.

首先用户点击上传之后,图片就会批量的上传到后台。后台就要一个个去依次处理。然后把结果跟状态返回给前台客户看到。

下面就以璞玉之前写的《jquery.uploadify动态传递表单元素》为例,现在把后台处理程序贴出来,给大伙学习下:

/********
uploadify 后台处理程序
Date:2012-06-24  by: pooy 

blog:www.pooy.net

①:把上次完成的图片文件名返回给前台
②:把上次完成的图片裁剪缩略图
*******/

//首先判断文件是否为空
if (!empty($_FILES)) {

	//把上次完成的图片文件名返回给前台
	//'name' 就是之前写 《jquery.uploadify动态传递表单元素》里面动态附加值
	echo $_FILES['Filedata']['name']; 
	$tmpDir = $_POST['note'];
	$fileName = iconv("UTF-8","GB2312",$_FILES["Filedata"]["name"]);
	//echo $fileName;
	$file = $_FILES["Filedata"]["tmp_name"];
	//fwrite($f,$tmpDir);
	//复制原图
	$path = "uptemp/".$tmpDir."_org/";
	//echo $path;
	if(!is_dir($path))
	   mkdir($path);
	if (copy($file, $path . $fileName)){
		$_ft =$file;
	}else{
		$_ft ="no";
	}

	//生成缩略图
	$fileName = str_replace(" ","\ ",$fileName);
	//$fileName = iconv("UTF-8","GB2312",$_GET['newname']);
	$pathTmb = "uptemp/".$tmpDir."/";
	$extPos = strrpos($fileName,".");
	$secfile= substr($fileName,0,$extPos);

	$tmbName = $secfile.".jpg";
	if(!is_dir($pathTmb))
	   mkdir($pathTmb);
	//echo $pathTmb."<br>";
	if(!file_exists($pathTmb.$tmbName)){
        //IMAGEMAGICKDIR这个就要根据您自己装的imagemagick目录来写了
        $cmd = IMAGEMAGICKDIR."/convert -resize 110x110 ". $path.$fileName." ".$pathTmb.$tmbName;
	//echo $cmd;
	system( $cmd );

	}
	$tmbName = str_replace("\ "," ",$tmbName);
	readfile($pathTmb.$tmbName);
	exit;
	//转码
	$fileName = iconv("GB2312","UTF-8",$secfile);

}

// 获取文件扩展名
// @param $fileName 上传文件的原文件名
	function getExt($fileName){
		$ext = explode(".", $fileName);
		$ext = $ext[count($ext) - 1];
		return strtolower($ext);
	}

原理都是把$_FILES 临时文件复制到本地目录进行存储,然后再使用IMAGEMAGICK裁剪什么的。有问题可以继续交流。有时间把《uploadify 3.2使用详解》也充实一下。

关于jquery uploadify 参数问题请移步:《Uploadify与php使用详解 》。

关于jquery uploadify 动态传值问题请移步:《jquery.uploadify动态传递表单元素 》。

  1. 非常感谢您的教程,有一个问题就是 接收返回值只能是单个文件名什么的,能不能搞成返回一个数组。接收后对应到表单中,便于提交数据库!望解答
    比如:
    ‘onUploadSuccess’ : function(file, data, response) {//每次成功上传后执行的回调函数,从服务端返回数据到前端
    img_id_upload[i]=data;
    i++;
    //alert(data);
    document.getElementById(“name”).value = data;
    document.getElementById(“size”).value = data;
    document.getElementById(“type”).value = data;

  2. 有1个问题,就是php端判断处理后,我想返回一个错误,比如echo json_encode(array(‘error’=>1)) 如何让前端进度条那里显示错误的样式?

  3. 您好,我想问一个问题,就是使用uploadify控件上传的时候,上传到了一半,网络中断,这时候怎么处理,我测试过,网络中断,依然上传成功,但是服务器没有该文件,
    最近做项目,用到uploadify控件,很期待你的回答。
    [email protected] 可以邮件给我吗?谢谢了。

  4. 如何上传10G的文件,我修改了php上传的限制,也修改了uploadify的参数,测试返回,提示上传成功,但实际上没有上传任何东西,因为返回的值没有得到上传文件的类型,上传的是个压缩文件,请问,如何整呢???

  5. 还有一个问题,提交之是用ajax触发,’onUploadSuccess’ : function(file, data, response) {}这个函数中的我alert 只能弹出 data 就是 uploadify中的echo内容,我想在index.php页面 获得这处理上传后的新文件名和路径,然后写入数据库,怎么样做呢?还有就是多文件上传,怎么样获得所有的文件信息。希望您能帮我看看 新手上路,多多帮忙啊 谢谢

  6. 急急急
    我剛學php,,js,只會貼代碼
    請問我有一個表單,裡面有輸入框和其他信息及上存圖片功能,請問如何將上存圖片的路徑和表格一起提交去數據庫
    求完整代碼
    注:主要是如何取圖片路徑和如何將路徑放在表格上一起提交

Leave a Reply to nadongjiao Cancel Reply

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">

请选择吧!