/** * 简单上传一个文件,然后用标准JSON格式返回文件的地址,不记录数据库数据 * @param Request $request * @param Response $response */ public function upfile(Request $request, Response $response) { if ($request->has_files()) { $upfile = $request->files('upfile'); $dbsave = $request->get('dbsave', 0); $isplayer = $request->get('isplayer', 0); $extpart = strtolower(strrchr($upfile['name'], '.')); $fileext = substr($extpart, 1); $filetype = 'attach'; if ('swf' == $fileext) { $filetype = 'flash'; } elseif (in_array($fileext, array('jpg', 'jpeg', 'png', 'gif'))) { $filetype = 'pic'; } elseif ('apk' == $fileext) { $filetype = 'android'; } elseif ('ipa' == $fileext) { $filetype = 'ios'; } elseif ('xap' == $fileext || 'cab' == $fileext) { $filetype = 'wp'; } elseif (in_array($fileext, array('mp3'))) { $filetype = 'audio'; } if ($isplayer) { $filetype = 'player'; } //~ create directory $targetfilecode = date('d_His') . '_' . randchar(); $targetfile = $targetfilecode . $extpart; $targetdir = ltrim($this->_uproot_dir, '/') . "{$filetype}/" . date('Ym') . '/'; if ($isplayer) { $targetdir .= 'original/'; } if (!is_dir($targetdir)) { mkdirs($targetdir, 0777, TRUE); } //~ move upload file to target dir $filepath = $targetdir . $targetfile; move_uploaded_file($upfile['tmp_name'], $filepath); chmod($filepath, 0644); if (file_exists($filepath)) { $mid = 0; $width = 0; $height = 0; $size = filesize($filepath); if ($filetype == 'pic') { list($width, $height, $type, $attr) = getimagesize($filepath); } $filepath_site = C('env.contextpath', '/') . $filepath; //要补上网站的根路径 if ($dbsave) { $data = ['mtype' => $filetype, 'filesize' => $size, 'path' => $filepath_site]; $mid = Media::save($data); } if ($isplayer) { $rt = Upload_Model::makeImgThumb($filepath_site); if (is_numeric($rt)) { $response->sendJSON(['flag' => 'ERR', 'msg' => 'make thumb fail']); } else { $mid = Upload_Model::savePlayerGallery(0, $rt); } } $response->sendJSON(['flag' => 'OK', 'msg' => 'upload file success', 'mid' => $mid, 'path' => $filepath_site, 'type' => $filetype, 'width' => $width, 'height' => $height, 'size' => $size]); } $response->sendJSON(['flag' => 'ERR', 'msg' => 'upload file error']); } $response->sendJSON(['flag' => 'ERR_NOFILES', 'msg' => 'no files upload']); }