/*****
* @param $path 上傳到本地的檔案路徑
* @param $url 請求的 url
* @param $uid 操作人id
* @param $position 請求發起的位置
* @return mixed|string
*/
function upload_file_to_java($path, $url,$uid=,$position='') {
//獲得檔案絕對路徑
$new_path = realpath($path);
//檢測檔案是否存在
if(!file_exists($new_path)){
$errArr = array('error_msg'=>'上傳的Excel檔案服務端不存在','操作人id'=>$uid,'上傳到本地的檔案路徑'=>$path,'擷取的上傳到本地的檔案絕對路徑'=>$new_path,'請求的url'=>$url,'請求發起的位置'=>$position,'産生錯誤的函數'=>'upload_file_to_java@'.__LINE__);
//記錄錯誤日志
write_to_log($errArr);
unset($errArr);
//傳回錯誤
return json_encode(array('code'=>'error','message'=>'upload error'));
}
//初始化
$curl = curl_init();
//檢測請求版本
if (class_exists('\CURLFile')) {
curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
$data = array('uploadUid' => $uid, 'file' => new \CURLFile($new_path)); //>=5.5
} else {
if (defined('CURLOPT_SAFE_UPLOAD')) {
curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
}
$data = array('uploadUid' => $uid, 'file' => '@' . $new_path); //<=5.5
}
//請求位址
curl_setopt($curl, CURLOPT_URL, $url);
//HTTP POST,設定這個選項為一個非零值
curl_setopt($curl, CURLOPT_POST, );
//在HTTP中的“POST”操作。
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
//設定是否顯示頭資訊
curl_setopt($curl, CURLOPT_RETURNTRANSFER, );
//在HTTP請求中包含一個”user-agent”頭的字元串。
curl_setopt($curl, CURLOPT_USERAGENT, "TEST");
//不設定逾時時間
curl_setopt($curl, CURLOPT_TIMEOUT, );
//執行
$result = curl_exec($curl);
//删除檔案
file_exists($new_path) && unlink($new_path);
//記錄請求頭資訊【req_url 請求url、req_data 請求攜帶的資料、req_header 頭資訊、req_position 發起請求的位置】
write_to_log(array('req_url' => $url, 'req_data' => $data, 'req_header' => curl_getinfo($curl), 'req_position' => $position), '', 'Header');
//如果存在錯誤
if (curl_errno($curl)) {
//主動觸發一個異常
$result = curl_error($curl);
}
//關閉資源
curl_close($curl);
//記錄響應資訊【req_url 請求url、req_data 請求攜帶的資料、resp_data 傳回的資料、req_position 發起請求的位置】
write_to_log(array('req_url' => $url, 'req_data' => $data, 'resp_data' => $result, 'req_position' => $position), '', 'Resp');
//傳回資料
return $result;
}
注解:
write_to_log 是本地封裝的一個記錄 log 日志的函數。
thanks~
轉載于:https://www.cnblogs.com/xianhenyuan/p/11085287.html