文件上传 源码

<!--?php //上传文件类型列表 $uptypes=array( ‘image/jpg‘, ‘image/jpeg‘, ‘image/png‘, ‘image/gif‘, ‘image/bmp‘, ); $max_file_size=2000000; //上传文件大小限制, 单位BYTE $destination_folder="uploadimg/"; //上传文件路径,默认本地路径 $watermark=1; //是否附加水印(1为加水印,其他为不加水印); $watertype=1; //水印类型(1为文字,2为图片) $waterposition=1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中); $waterstring = "hello world"; //水印字符串 $waterimg=""; //水印图片 $imgpreview=1; //是否生成预览图(1为生成,其他为不生成); $imgpreviewsize=1/2; //缩略图比例 ?-->

图片上传

<style type="text/css">
<!-- body { font-size: 16px; } input { background-color: #66CCFF; border: 1px inset #CCCCCC; } --><br />
</style>

&nbsp;

<form enctype="multipart/form-data" method="post" name="upform">上传文件:
<input name="upfile" type="file" />
<input name="upfiles" type="file" />
<input type="submit" value="上传" />
允许上传的文件类型为:<!--?php echo implode(‘, ‘,$uptypes);?--></form><!--?php &lt;/p&gt;
&lt;p&gt;if ($_SERVER[‘REQUEST_METHOD‘] == ‘POST‘) //$_SERVER[‘REQUEST_METHOD‘]提交表单的方式,这里用POST提交。&lt;br ?--> {

if (!is_uploaded_file($_FILES["upfile"]["tmp_name"]))
//判断是否存在文件
{
echo "图片不存在!";
exit;
}

foreach ($_FILES as $f) {
// die(var_dump($_FILES));
$file = $f;
// $file = $_FILES["upfile"];
if($max_file_size &lt; $file["size"]) //检查文件大小 { echo "文件太大!"; exit; } if(!in_array($file["type"], $uptypes)) //检查文件类型 { echo "文件类型不符!".$file["type"]; exit; } if(!file_exists($destination_folder)) //file_exists() 函数检查文件或目录是否存在。 { mkdir($destination_folder); //mkdir() 函数创建目录。 } $filename = $file["tmp_name"]; $image_size = getimagesize($filename); $pinfo = pathinfo($file["name"]); //pathinfo() 函数以数组或字符串的形式返回关于文件路径的信息。 $ftype = $pinfo[‘extension‘]; //"extension"在PHP.INI文件里面 因为我们要用到GD库 $destination = $destination_folder.time().".".$ftype; if (file_exists($destination) &amp;&amp; $overwrite != true) //判断是否存在同名文件 { $destination = $destination_folder.time().rand(1,9999).".".$ftype; // echo "同名文件已经存在了"; // exit; } if(!move_uploaded_file ($filename, $destination)) { echo "移动文件出错"; exit; } $pinfo = pathinfo($destination); $fname = $pinfo["basename"]; $zip = new ZipArchive; //首先实例化这个类 if ($zip-&gt;open(‘test.zip‘,ZipArchive::CREATE === TRUE)){
//然后查看是否存在test.zip这个压缩包
if ($zip-&gt;addFile($destination)) {
echo ‘
ok‘;
}//添加到test.zip压缩包中
$zip-&gt;close(); //关闭
} else {
echo ‘
failed‘;
}
echo " <span style="color: red;">已经成功上传</span>
文件名: <span style="color: blue;">".$destination_folder.$fname."</span>
";
echo " 宽度:".$image_size[0];
echo " 高度:".$image_size[1];
echo "
大小:".$file["size"]." bytes";
if($watermark==1) //是否添加水印
{
$iinfo=getimagesize($destination,$iinfo);
$nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
$white=imagecolorallocate($nimage,255,255,255);
$black=imagecolorallocate($nimage,0,0,0);
$red=imagecolorallocate($nimage,255,0,0);
imagefill($nimage,0,0,$white);
switch ($iinfo[2])
{
case 1:
$simage =imagecreatefromgif($destination);
break;
case 2:
$simage =imagecreatefromjpeg($destination);
break;
case 3:
$simage =imagecreatefrompng($destination);
break;
case 6:
$simage =imagecreatefromwbmp($destination);
break;
default:
die("不支持的文件类型");
exit;
}
imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);
switch($watertype)
{
case 1: //加水印字符串
imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);
break;
case 2: //加水印图片
$simage1 =imagecreatefromgif("xplore.gif");
imagecopy($nimage,$simage1,0,0,0,0,85,15);
imagedestroy($simage1);
break;
}
switch ($iinfo[2])
{
case 1:
//imagegif($nimage, $destination);
imagejpeg($nimage, $destination);
break;
case 2:
imagejpeg($nimage, $destination);
break;
case 3:
imagepng($nimage, $destination);
break;
case 6:
imagewbmp($nimage, $destination);
//imagejpeg($nimage, $destination);
break;
}
//覆盖原上传文件
imagedestroy($nimage);
imagedestroy($simage);
}
if($imgpreview==1) //是否预览图片
{
echo "
图片预览:
";
echo "<img src="\&quot;&quot;.$destination.&quot;\&quot;" alt="\&quot;图片预览:\r文件名:&quot;.$destination.&quot;\r上传时间:\&quot;" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize); echo " />";
}
}
}
?&gt;

原文地址:https://www.cnblogs.com/xin521/p/9077013.html

时间: 2024-10-09 14:25:51

文件上传 源码的相关文章

eclipse中导入jdk源码、SpringMVC注解@RequestParam、SpringMVC文件上传源码解析、ajax上传excel文件

eclipse中导入jdk源码:http://blog.csdn.net/evolly/article/details/18403321, http://www.codingwhy.com/view/799.html. ------------------------------- SpringMVC注解@RequestParam:http://825635381.iteye.com/blog/2196911. --------------------------- SpringMVC文件上传源

深入springMVC源码------文件上传源码解析(下篇)

在上篇<深入springMVC------文件上传源码解析(上篇) >中,介绍了springmvc文件上传相关.那么本篇呢,将进一步介绍springmvc 上传文件的效率问题. 相信大部分人在处理文件上传逻辑的时候会直接获取输入流直接进行操作,伪代码类似这样: @RequestMapping(value = "/upload", method = RequestMethod.POST) public ResultView upload(@RequestParam("

ajaxFileUpload 实现多文件上传(源码)

按照原ajaxFileUpload.js是不能多文件上传的.需要对源码进行修改:主要修改了fileElementId部分 具体参考 https://blog.csdn.net/itmyhome1990/article/details/36396291,里面有具体使用方法 下面是修改后的源码 jQuery.extend( { handleError : function(s, xhr, status, e) { if (s.error) s.error(xhr, status, e); else

maven上传源码到私服

上传源码 项目中采用了分模块的方式构建,直接将maven-source-plugin写到父pom中,尝试了很多次发现源码一直不能上传到私服中,纠结了很长时间才发现原来多模块项目和普通一个项目的配置是有区别的,需要在每个需要上传源码的子模块中都配置maven-source-plugin才可以上传,于是乎有了一下的代码 1,非多模块项目 <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId>

html5文件夹上传源码

前段时间做视频上传业务,通过网页上传视频到服务器. 视频大小 小则几十M,大则 1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长,请求超时:3,传输中断,必须重新上传导致前功尽弃: 解决方案: 1,修改服务端上传的限制配置:Nginx 以及 PHP 的上传文件限制 不宜过大,一般5M 左右为好: 2,大文件分片,一片一片的传到服务端,再由服务端合并.这么做的好处在于一旦上传失败只是损失一个分片而已,不用整个文件重传,而且每个分

深入springMVC------文件上传源码解析(上篇)

最近在项目中,使用springmvc 进行上传文件时,出现了一个问题: org.springframework.web.multipart.MultipartException: The current request is not a multipart request .... 以上堆栈信息省略. 乍看一下,没啥值得讨论的地方,就是说当前这个请求不是一个multipart request,也就是说不是上传文件的请求.但是,这结果还是令我稍感意外,为什么呢?因为,我本意是将文件这个参数作为非必

Plupload上传组件 + javaweb实现上传源码以及DEMO

Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度.图像自动缩略和上传分块.可同时上传多个文件: 上网找了很多Plupload的DEMO都无法正常使用, 而且Plupload官方的DEMO是基于PHP, 折腾了半天, 写了一个基于JAVA的DEMO: Plupload支持多种方式上传, 包括,flash上传(解决了不同服务器跨域的问题), html5方式上传, html4上传, silverlight的方式上传, Plupload的核心是另外一个JS库: MOXIE,

WPF学习开发客户端软件-任务助手(已上传源码)

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

Android选择系统相册或拍照上传源码

简单示范获取系统相册图片和拍照获取图片回传压缩处理 下载地址:http://www.devstore.cn/code/info/821.html 运行截图: