废话少说,直接上代码:
<?php /** * Note:for octet-stream upload * 这个是流式上传PHP文件 * Please be amended accordingly based on the actual situation */ $post_input = "php://input"; $save_path = dirname(__FILE__); $postdata = file_get_contents($post_input); if (isset($postdata) && strlen($postdata) > 0) { $filename = $save_path . "/" . uniqid() . ".jpg"; $handle = fopen($filename, "w+"); fwrite($handle, $postdata); fclose($handle); if (is_file($filename)) { echo "Image data save successed,file:" . $filename; exit (); } else { die ("Image upload error!"); } } else { die ("Image data not detected!"); }
<?php /** * Note:for multipart/form-data upload * 这个是标准表单上传PHP文件 * Please be amended accordingly based on the actual situation */ if (!$_FILES["Filedata"]) { die ("Image data not detected!"); } if ($_FILES["Filedata"]["error"] > 0) { switch ($_FILES ["Filedata"] ["error"]) { case 1 : $error_log = "The file is bigger than this PHP installation allows"; break; case 2 : $error_log = "The file is bigger than this form allows"; break; case 3 : $error_log = "Only part of the file was uploaded"; break; case 4 : $error_log = "No file was uploaded"; break; default : break; } die ("upload error:" . $error_log); } else { $img_data = $_FILES["Filedata"]["tmp_name"]; $size = getimagesize($img_data); $file_type = $size["mime"]; if (!in_array($file_type, array("image/jpg", "image/jpeg", "image/pjpeg", "image/png", "image/gif"))) { $error_log = "only allow jpg,png,gif"; die ("upload error:" . $error_log); } switch ($file_type) { case "image/jpg" : case "image/jpeg" : case "image/pjpeg" : $extension = "jpg"; break; case "image/png" : $extension = "png"; break; case "image/gif" : $extension = "gif"; break; } } if (!is_file($img_data)) { die ("Image upload error!"); } // 图片保存路径,默认保存在该代码所在目录(可根据实际需求修改保存路径) $save_path = dirname(__FILE__); $uinqid = uniqid(); $filename = $save_path . "/" . $uinqid . "." . $extension; $result = move_uploaded_file($img_data, $filename); if (!$result || !is_file($filename)) { die ("Image upload error!"); } echo "Image data save successed,file:" . $filename; exit ();
备注:美图秀秀提供两个上传接口供测试
一个是octet-stream方式上传,地址为:http://imgkaka.meitu.com/xiuxiu_web_pic_save.php
另一个是multipart/form-data方式上传,地址为:http://web.upload.meitu.com/image_upload.php
表单名称为"upload_file"。