Commit 5932caa791767e7df7a2f512c5d570291e2e5212

Authored by luoyanshou
1 parent 508e8023

【留言板】 文件上传实现

trunk/Message/Api/Controller/Message/MessInputController.class.php
... ... @@ -21,10 +21,8 @@ class MessInputController extends \Api\Controller\AbstractController
21 21 */
22 22 public function Index_post()
23 23 {
24   -
25 24 session_start();
26 25 $data = $this->checkFields(I('post.'));
27   -
28 26 if (!$data) {
29 27 $this->_result = "数据验证失败";
30 28 return false;
... ... @@ -37,61 +35,73 @@ class MessInputController extends \Api\Controller\AbstractController
37 35 $data['m_ip'] = $_SERVER['REMOTE_ADDR'];
38 36 $data['domain'] = 'wx5019b9c455ea9c81';
39 37  
40   - /*
41   - * 上传图片 取得图片路径 $path_img
42   - * $data['m_imgs'] = $path_img;
43   - *
44   - */
45   - if ($_FILES['myImg']) {
46   - // coding...
47   - }
48 38  
49   - $mid = $messagesModel->insert($data);
  39 + // 上传图片 取得图片路径 $path_img
  40 + if ($_FILES['myImg']['error'] == 0) {
  41 + $imgPath = $this->uploadFiles($_FILES['myImg'],$data['m_uid']);
  42 + if ($imgPath === false) {
  43 + return false;
  44 + } else {
  45 + $data['m_imgs'] = $imgPath;
  46 + }
  47 + }
50 48  
51   - /*
52   - if (($mid = $messagesModel->insert($data)) != null && $_FILES['myFile']) {
  49 + if (($mid = $messagesModel->insert($data)) != null && $_FILES['myFile']['error'] == 0) {
  50 + $att_flg = true;
53 51 // 留言成功后开始上传附件
54 52 $attachmentModel = new AttachmentModel();
55 53 unset($data);
56 54 $data['a_mid'] = $mid;
  55 + $data['domain'] = 'wx5019b9c455ea9c81';
57 56  
58   -
59   - // 附件上传实现 取得附件路径 $path_att
60   - // $data['a_path'] = $path_att;
61   - //
  57 + $attPath = $this->uploadFiles($_FILES['myFile'],$mid);
  58 + if ($attPath === false) {
  59 + return false;
  60 + } else {
  61 + $data['a_path'] = $attPath;
  62 + }
  63 + // 附件上传成功 取得附件路径 $attPath
62 64 if (($aid = $attachmentModel->insert($data)) != null) {
63 65 $this->_result = "留言成功,上传附件成功。";
64 66 }else{
65 67 // 上传附件失败后 进行相应的处理
66 68 $this->_result = "上传附件失败。";
67 69 }
  70 + }
68 71  
69   - }*/
70   -
71   - if ($mid > 0) {
  72 + if ($mid && $att_flg) {
  73 + if ($aid > 0) {
  74 + $this->_result = [
  75 + 'mid' => $mid,
  76 + 'aid' => $aid
  77 + ];
  78 + } else {
  79 + $messagesModel->update_mess($mid,'del');
  80 + echo '<script type="text/javascript">alert("附件上传失败。");</script>';
  81 + return false;
  82 + }
  83 + } else if ($mid && !$att_flg) {
72 84 $this->_result = [
73   - 'mid' => $mid
  85 + 'mid' =>$mid
74 86 ];
75   - header('Location: http://lys.com/mess_front/list.php');
76   - } else {
77   - $this->_result = $mid;
  87 + } else if(!$mid){
  88 + echo '<script type="text/javascript">alert("留言失败。");</script>';
  89 + $this->_result = '留言失败。';
  90 + return false;
78 91 }
79 92  
80   -
81   -
  93 + header('Location: http://lys.com/mess_front/list.php');
82 94 }
83   -
84 95 /**
85 96 * 验证提交参数字段合法性
86 97 *
87   - * @param array $postData
  98 + * @param array $postData:post提交的数据
88 99 * @return bool
89 100 */
90 101 private function checkFields($postData = [])
91 102 {
92 103 $parrent = "/\ |\/|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\{|\}|\:|\<|\>|\?|\[|\]|\,|\.|\/|\;|\\' | \`|\-|\=|\\\|\|/";
93 104 $data = [];
94   -
95 105 if (empty($postData['title']) || strlen($postData['title'])>80) {
96 106 $this->_result = "标题不能为空且标题长度必须小于80。";
97 107 return false;
... ... @@ -106,7 +116,31 @@ class MessInputController extends \Api\Controller\AbstractController
106 116 } else {
107 117 $data['message'] = preg_replace($parrent, "", $postData['message']);
108 118 }
109   -
110 119 return $data;
111 120 }
  121 + /**
  122 + * 文件上传功能
  123 + * @param null $file:表单提交文件
  124 + * @param null $mid:留言ID(上传附件时需要)
  125 + * @return bool|string:上传成功时返回文件路径
  126 + */
  127 + protected function uploadFiles($file = null,$mid = null)
  128 + {
  129 + $path = $_SERVER['DOCUMENT_ROOT'];
  130 + $fileInfo = $file;
  131 + if ($fileInfo['error'] === 0 && $fileInfo['size']<(2048*1000)) {
  132 + $fileType = end(explode('.', $fileInfo['name']));
  133 + $filePath = '/static/message/'.$mid.'_'.time().'.'.$fileType;
  134 + if (move_uploaded_file($fileInfo['tmp_name'],$path.$filePath)) {
  135 + return $filePath;
  136 + } else {
  137 + $this->_result = '移动文件失败。';
  138 + return false;
  139 + }
  140 + } else {
  141 + $this->_result = '上传失败。';
  142 + return false;
  143 + }
  144 + }
112 145 }
  146 +
... ...