<?php
define('IN_SAESPOT', 1);
include(dirname(__FILE__) . '/config.php');
include(dirname(__FILE__) . '/common.php');
if (!$cur_user) exit('error: 401 login please');
if ($cur_user['flag']==0){
exit('error: 403 Access Denied');
}else if($cur_user['flag']==1){
exit('error: 401 Access Denied');
}
if($options['close_upload']) exit('error: 403 附件上传已禁用');
$mw = intval($_GET['mw']);
$rsp = array('status'=>201, 'msg'=>'ok');
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if($_FILES['filetoupload']['size']){
// 上传的文件名
$up_name = strtolower($_FILES['filetoupload']['name']);
// 上传文件扩展名
$ext_name = pathinfo($up_name, PATHINFO_EXTENSION);
if($options['ext_list']){
// 如果限制扩展名
if(in_array($ext_name, explode(",", $options['ext_list']))){
$pass = '1';
}else{
$pass = null;
$rsp['msg'] = '该文件格式不允许上传,只支持'.$options['ext_list'];
}
}else{
$pass = '1';
}
if($pass){
$is_img = null;
// 尝试以图片方式处理
$img_info = getimagesize($_FILES['filetoupload']['tmp_name']);
if($img_info){
//创建源图片
if($img_info[2]==1){
$img_obj = imagecreatefromgif($_FILES['filetoupload']['tmp_name']);
$t_ext = 'gif';
}else if($img_info[2]==2){
$img_obj = imagecreatefromjpeg($_FILES['filetoupload']['tmp_name']);
$t_ext = 'jpg';
}else if($img_info[2]==3){
$img_obj = imagecreatefrompng($_FILES['filetoupload']['tmp_name']);
$t_ext = 'png';
}
//如果上传的文件是jpg/gif/png则处理
if(isset($img_obj)){
// 是正确的图片格式
$is_img = '1';
$new_name = $timestamp.'.'.$t_ext;
}else{
// 其它格式的图片
$rsp['msg'] = '该图片格式不支持,只支持jpg/gif/png';
// 直接取同扩展名
$new_name = $timestamp.'.'.$ext_name;
}
}else{
// 非图片
$rsp['msg'] = '上传的不是图片,只支持jpg/gif/png格式的图片';
if(in_array($ext_name, array('jpg','jpeg','gif','png'))){
// 扩展名是图片,但不能用getimagesize识别,可能是改扩展名伪装
$new_name = $timestamp.'.bad-'.$ext_name;
}else{
if(in_array($ext_name, array('php','htm','html'))){
$new_name = $timestamp.'.rename-'.$ext_name;
}else{
$new_name = $timestamp.'.'.$ext_name;
}
}
}
///保存
$upload_dir = 'upload/'.$cur_uid;
if(!$options['upyun_domain'] || !$options['upyun_user'] || !$options['upyun_pw']){
if(!is_dir($upload_dir)) {
mkdir($upload_dir, 0777, true);
}
}
$upload_filename = $upload_dir.'/'.$new_name;
if($is_img){
// 是正确的图片文件
// 判断是不是动态gif
$is_gifs = null;
if($img_info[2]==1){
$out_img = file_get_contents($_FILES['filetoupload']['tmp_name']);
if(strpos( $out_img, chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0') !== FALSE){
$is_gifs = '1';
}
}
if(!$is_gifs){
if($img_info[0] > $mw){
$percent = $mw/$img_info[0];
$new_w = round($img_info[0]*$percent);
$new_h = round($img_info[1]*$percent);
}else{
$new_w = $img_info[0];
$new_h = $img_info[1];
}
$new_image = imagecreatetruecolor($new_w, $new_h);
$bg = imagecolorallocate ( $new_image, 255, 255, 255 );
imagefill ( $new_image, 0, 0, $bg );
////目标文件,源文件,目标文件坐标,源文件坐标,目标文件宽高,源宽高
imagecopyresampled($new_image, $img_obj, 0, 0, 0, 0, $new_w, $new_h, $img_info[0], $img_info[1]);
// 添加水印
if($options['img_shuiyin']){
$textblack = imagecolorallocate($new_image, 155, 155, 155);
$shuiyin = $_SERVER['HTTP_HOST'];
$img_x = $new_w - (strlen($shuiyin)*8.5);
$img_y = $new_h-22;
imagestring($new_image, 4, $img_x, $img_y, $shuiyin, $textblack);
}
}
imagedestroy($img_obj);
if($options['upyun_domain'] && $options['upyun_user'] && $options['upyun_pw']){
// 上传到又拍云
include(dirname(__FILE__).'/upyun.class.php');
if(!$is_gifs){
ob_start();
imagejpeg($new_image, NULL, 95);
$out_img = ob_get_contents();
ob_end_clean();
}
$upyun = new UpYun($options['upyun_domain'], $options['upyun_user'], $options['upyun_pw']);
// 本地调试失败
if($upyun->writeFile('/'.$upload_filename, $out_img, true)){
$rsp['status'] = 200;
$rsp['url'] = 'http://'.$options['upyun_domain'].'.b0.upaiyun.com/'.$upload_filename;
$rsp['msg'] = '图片已成功上传';
}else{
$rsp['msg'] = '图片保存失败,请稍后再试';
}
unset($out_img);
}else{
// 上传到服务器
if($is_gifs){
if (move_uploaded_file($_FILES['filetoupload']['tmp_name'], $upload_filename)) {
$rsp['status'] = 200;
$rsp['url'] = 'http://'.$_SERVER['HTTP_HOST'].'/'.$upload_filename;
$rsp['msg'] = '图片已成功上传';
}else{
$rsp['msg'] = '图片保存失败,请稍后再试';
}
}else{
if(imagejpeg($new_image, $upload_filename, 95)){
$rsp['status'] = 200;
$rsp['url'] = 'http://'.$_SERVER['HTTP_HOST'].'/'.$upload_filename;
$rsp['msg'] = '图片已成功上传';
}else{
$rsp['msg'] = '图片保存失败,请稍后再试';
}
}
}
if(!$is_gifs){
imagedestroy($new_image);
}
}else{
// 其它文件
// $rsp['msg'] = '本站暂不支持上传非图片附件';
// 涉及安全问题,别开放图片以外的文件上传
// 参见 http://youbbs.sinaapp.com/t-172
//
if($options['upyun_domain'] && $options['upyun_user'] && $options['upyun_pw']){
// 上传到又拍云
include(dirname(__FILE__).'/upyun.class.php');
$upyun = new UpYun($options['upyun_domain'], $options['upyun_user'], $options['upyun_pw']);
// 本地调试失败
if($upyun->writeFile('/'.$upload_filename, $_FILES['filetoupload']['tmp_name'], true)){
$rsp['status'] = 200;
$rsp['url'] = '附件:'.$up_name.'http://'.$options['upyun_domain'].'.b0.upaiyun.com/'.$upload_filename;
$rsp['msg'] = '附件已成功上传';
}else{
$rsp['msg'] = '附件保存失败,请稍后再试';
}
unset($out_img);
}else{
// 上传到服务器
if (move_uploaded_file($_FILES['filetoupload']['tmp_name'], $upload_filename)) {
$rsp['status'] = 200;
$rsp['url'] = '附件:'.$up_name.' http://'.$_SERVER['HTTP_HOST'].'/'.$upload_filename;
$rsp['msg'] = '文件已成功上传';
}else{
$rsp['msg'] = '文件保存失败,请稍后再试';
}
}
//
}
}
}else{
$rsp['msg'] = '附件数据没有正确上传';
}
header("Content-Type: text/html");
echo json_encode($rsp);
}
?>
相关推荐
在IT行业中,图片上传功能是Web应用中常见的需求,它涉及到前端与后端的交互,以及数据传输协议的使用。本示例中的“基于http协议 图片上传的前端后端实现”是一个完整的解决方案,涵盖了从用户界面到服务器处理的全...
《超漂亮的ExtJS界面JSP图片上传系统详解》 在当今的Web开发中,用户界面的设计与用户体验息息相关,一个美观且功能完善的上传系统是提升网站吸引力的重要元素。本篇文章将详细解析“超漂亮的ExtJS界面的JSP图片...
在处理图片上传时,服务器端的ASP.NET代码会接收文件,并进行一些验证,如检查文件类型、大小限制,防止恶意文件上传。然后,图片可能被保存到服务器的特定目录,或者存储在数据库中。如果存储在数据库,通常会选择...
js控制的预览功能验证功能图片上传超好看
【标题】"会员管理图片上传"所涉及到的知识点主要集中在构建一个简单的会员管理系统中,特别是与用户图片上传功能相关的部分。在这样的系统中,用户通常需要上传个人头像或者其他相关图片,这涉及到前端表单设计、...
在图片上传中,File API扮演了核心角色。它提供了`FileReader`对象用于读取文件内容,`FileList`对象用于存储用户选择的多个文件,以及`FormData`对象用于封装文件数据并发送到服务器。 2. ****: 这是HTML5中用于让...
在IT领域,多图片上传是一项常见的功能,尤其在社交媒体、电商平台和内容管理系统中。这个功能让用户能够一次性上传多个图片,极大地提高了用户体验。标题中的“多图片上传”指的是一个JavaScript库或者插件,它使得...
在Android平台上,将图片上传至网络服务器是常见的需求,尤其在开发涉及用户交互的应用时,如社交、电商或媒体分享类应用。这个过程通常涉及到网络请求、数据编码、多线程处理以及错误处理等多个环节。以下我们将...
在现代Web应用中,图片上传是一项常见的功能,尤其是在社交媒体、电子商务和内容分享平台。本教程将探讨如何利用HTML5、jQuery以及Java后端技术来实现图片的压缩与上传。首先,我们来详细了解一下每个组件的作用。 ...
综合以上信息,这个压缩包提供了一个完整的图片轮播解决方案,包括后台图片上传功能和前端的PixViewer展示组件。开发者可以利用`focus_ok.fla`自定义组件样式,通过`piclb.php`处理图片服务端操作,最后在网页中使用...
通过查看和学习这个Demo,开发者可以了解到如何在实际项目中整合uploadifive与.NET,以及如何处理图片上传的相关逻辑,比如大小限制、格式检查、文件命名规则等。 总的来说,这个插件和Demo涵盖了前端开发、HTML5新...
在JavaScript中实现图片上传并立即显示的功能是一项常见的需求,尤其在网页交互和用户界面设计中。这个过程通常涉及以下几个关键知识点: 1. **HTML表单与文件输入元素**:首先,我们需要一个HTML表单来让用户选择...
【压缩包子文件的文件名称列表】:“132685218441222689”看起来像是一个随机生成的文件名,可能是图片上传系统中的一个临时文件或测试文件。在实际的图片上传系统中,通常会为每个上传的图片生成一个唯一的标识符,...
"超简单文件上传,只是一个控件"这个标题暗示我们将讨论一个简易的ASP.NET文件上传解决方案,它主要依赖于内置的FileUpload控件。C#是ASP.NET的主要编程语言,因此我们将深入探讨如何使用C#来处理文件上传。 文件...
通过以上分析,我们可以看到,这段代码提供了一个基本但功能完备的图片上传机制,它不仅处理了文件上传的基本需求,还增加了额外的安全性和效率措施,如文件类型检查、大小限制以及避免文件重名。这为开发人员提供了...
【PHP图片上传系统详解】 PHP图片上传系统是Web开发中常见的功能之一,它允许用户将本地的图片文件上传到服务器,以便在网站上展示或进行后续处理。在本实例开发源码中,我们将深入探讨PHP如何实现这个功能,以及...
最后,考虑到安全性,需要验证上传的文件类型和大小,防止恶意文件上传。例如,限制上传为图片类型: ```php $allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; if (!in_array($_FILES['files']['type']...
在使用这个模板时,开发者需要考虑如何将其与后端服务集成,例如云存储服务(如Amazon S3或Google Cloud Storage)用于上传和存储用户图片,以及可能的身份验证和权限管理功能,以保护用户的数据安全。 总结来说,...
总的来说,这个项目展示了如何在Delphi环境中利用图像处理技术生成缩略图,以及如何通过HTTP协议实现批量图片上传。对于Delphi开发者,这不仅是一个实用的工具,也是一个学习和研究图像处理、网络通信、文件操作等多...
以下内容将详细解析图片上传的基本原理、实现步骤、注意事项及优化技巧,并结合数据库操作进行综合应用。 ### PHP 图片上传基本原理 在Web开发中,图片上传是一个常见的功能需求。通过表单提交的方式,用户可以将...