PHP微信上传图片处理
2016-11-09 15:51
447 查看
<span style="font-family: Arial, Helvetica, sans-serif;"> /**</span>
* 微信端图片上传 * * */ public function uploadSafeWeixinImage($name) { header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { exit; } if (!empty($_REQUEST['debug'])) { $random = rand(0, intval($_REQUEST['debug'])); if ($random === 0) { header("HTTP/1.0 500 Internal Server Error"); exit; } } @set_time_limit(5 * 60); $targetDir = './data/mobile/safe/'; $uploadDir = './data/mobile/safeUpload/'; $cleanupTargetDir = true; // Remove old files $maxFileAge = 5 * 3600; // Temp file age in seconds if (!file_exists($targetDir)) { @mkdir($targetDir); } if (!file_exists($uploadDir)) { @mkdir($uploadDir); } $fileName = uniqid("file_"); $fileName = iconv('UTF-8', 'GB2312', $fileName); //转编码 $filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName; $uploadPath = $uploadDir . DIRECTORY_SEPARATOR . $fileName; $chunk = isset($_REQUEST["chunk"]) ? intval($_REQUEST["chunk"]) : 0; $chunks = isset($_REQUEST["chunks"]) ? intval($_REQUEST["chunks"]) : 1; if ($cleanupTargetDir) { if (!is_dir($targetDir) || !$dir = opendir($targetDir)) { $error["code"] = 1; $error["msg"] = "文件目录不存在-1"; return $error; } while (($file = readdir($dir)) !== false) { $tmpfilePath = $targetDir . DIRECTORY_SEPARATOR . $file; // If temp file is current file proceed to the next if ($tmpfilePath == "{$filePath}_{$chunk}.part" || $tmpfilePath == "{$filePath}_{$chunk}.parttmp") { continue; } // Remove temp file if it is older than the max age and is not the current file if (preg_match('/\.(part|parttmp)$/', $file) && (@filemtime($tmpfilePath) < time() - $maxFileAge)) { @unlink($tmpfilePath); } } closedir($dir); } if (!$out = @fopen("{$filePath}_{$chunk}.parttmp", "wb")) { $error["code"] = 1; $error["msg"] = "文件目录不存在-2"; return $error; } if (!empty($_FILES)) { if ($_FILES[$name]["error"] || !is_uploaded_file($_FILES[$name]["tmp_name"])) { $error["code"] = 1; $error["msg"] = "文件上传失败"; return $error; } // Read binary input stream and append it to temp file if (!$in = @fopen($_FILES[$name]["tmp_name"], "rb")) { $error["code"] = 1; $error["msg"] = "文件目录不存在-3"; return $error; } } else { if (!$in = @fopen("php://input", "rb")) { $error["code"] = 1; $error["msg"] = "文件目录不存在-4"; return $error; } } while ($buff = fread($in, 4096)) { fwrite($out, $buff); } @fclose($out); @fclose($in); rename("{$filePath}_{$chunk}.parttmp", "{$filePath}_{$chunk}.part"); $index = 0; $done = true; for ($index = 0; $index < $chunks; $index++) { if (!file_exists("{$filePath}_{$index}.part")) { $done = false; break; } } if ($done) { if (!$out = @fopen($uploadPath, "wb")) { $error["code"] = 1; $error["msg"] = "文件目录不存在-5"; return $error; } if (flock($out, LOCK_EX)) { for ($index = 0; $index < $chunks; $index++) { if (!$in = @fopen("{$filePath}_{$index}.part", "rb")) { break; } while ($buff = fread($in, 4096)) { fwrite($out, $buff); } @fclose($in); @unlink("{$filePath}_{$index}.part"); } flock($out, LOCK_UN); } @fclose($out); } $error["code"] = 0; $error["msg"] = "文件上传成功"; return $error; }
相关文章推荐
- php对图片上传的处理以及图片加文字水印和图片水印的方法
- 微信公共服务平台开发(.Net 的实现)8-------处理图片(上传下载发送)
- php对上传图片进行缩放处理
- PHP仿微信多图片预览上传功能
- Android仿微信,上传本地多张图片,缩放预览,以及图片处理等
- php 上传图片 对某一部分模糊处理 实现马赛克遮挡效果(待续)
- 亲测可用的PHP上传图片处理代码 带详细注释
- 用php和imagemagick来处理图片文件的上传和缩放处理
- 微信js-sdk,选择图片,上传,下载到本地,php服务端
- 在php中处理上传的图片,并将地址保存到mysql中
- [图片处理]PHP对非标准格式的图片pjpeg上传失败的解决办法
- 微信js-sdk,选择图片,上传,下载到本地,php服务端
- 微信公共服务平台开发(.Net 的实现)8-------处理图片(上传下载发送)
- PHP仿微信多图片预览上传
- 关于 安乐业(php+mysql)不能上传图片的处理
- 用php和imagemagick来处理图片文件的上传和缩放处理(转贴)
- 微信公共服务平台开发(.Net 的实现)8-------处理图片(上传下载发送)
- html5上传图片php特殊处理一下
- 【PHP】symfony上传图片的处理
- php图片处理之图片转为base64格式上传