<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # PHP PUT上傳 ~~~php class FormDataParser { private static $partSize = 4096; //每次最大獲取字節 /** * 負責解析FormData */ public static function parser($options = []) { $options['saveFile'] = true; 測試能否正常保存臨時文件 $formData = fopen("php://input", "r"); $retData = []; $boundary = rtrim(fgets($formData), "\r\n"); //第一行是boundary $info = []; //info段的信息 $data = ''; //拼接的數據 $infoPart = true; //是否是info段 while ($line = fgets($formData, self::$partSize)) { if ($boundary . "\r\n" == $line || $boundary . "--\r\n" == $line) { //如果是分割 $infoPart = true; if ($info['type'] == 'json') { $data = json_decode($data, true); $retData[$info['name']] = $data; } else if($info['type'] == 'file') { if(isset($info['tmp_file'])) { fclose($info['file_handle']); $retData[$info['name']] = [ 'org_name' => $info['org_name'], 'tmp_file' => $info['tmp_file'] ]; } else { $retData[$info['name']] = $data; } } $data = ''; } else if ("\r\n" == $line) { if ($infoPart) { //解析info $info = self::parserInfo($data, $options); if (isset($info['tmp_file'])) { $info['file_handle'] = fopen($info['tmp_file'], 'w'); } $data = ''; $infoPart = false; } } else { if($infoPart == false && isset($info['tmp_file'])) { fwrite($info['file_handle'], $line); } else { $data .= $line; } } } fclose($formData); print_r($retData); //移動文件 if(!file_exists($retData['file']['tmp_file'])){ var_dump('文件不存在'); } $file_name = $retData['file']['org_name']; $path_new = './uploads/files/' . $file_name; rename($retData['file']['tmp_file'], $path_new); var_dump('上傳成功'); } private static function parserInfo($data, $options) { //獲取參數名稱, type $infoPattern = '/name="(.+?)"(; )?(filename="(.+?)")?/'; //todo: 待優化 preg_match($infoPattern, $data, $matches); $info['name'] = $matches[1]; $info['type'] = 'json'; //如果是文件 if (count($matches) > 4) { $info['type'] = 'file'; $info['org_name'] = $matches[4]; //如果設置保存文件, 保存到臨時文件 if (isset($options['saveFile']) && $options['saveFile']) { $tmpFile = tempnam(sys_get_temp_dir(), 'FD'); $info['tmp_file'] = $tmpFile; } } return $info; } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看