Example #1
0
 /**
  * 简单上传一个文件,然后用标准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']);
 }