這是我的問題。我有一個不太「用戶友好」的票據跟蹤系統,但我希望我的用戶向系統提交「票據」而不讓他們看到它。上傳文件到另一個PHP頁面?
我剛剛使用自定義HTTP表單併發布到票據跟蹤系統。一個問題是'成功/完成'頁面容易讓人迷惑。所以我想......因爲我不能改變票系統使用不同的'成功'頁面。我將僅使用CURL處理HTTP Post交換並報告定製成功或問題頁面。下面是一些抽象代碼。
文件:tickethelper.php
<?php
extract($_POST);
$url = 'TICKETSYSTEMURL';
$fields = array(
'fullname'=>urlencode($fullname),
/*many more fields*/
);
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch, CURLOPT_MAXREDIRS, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
if((strlen(strstr($contents,'Your ticket has been submitted')))>0){
header("Location: http://THANKYOU");
}
else{
header("Location: http://OOPS");
}
?>
不過,我意識到的是,我很想念我的文件上傳。我見過的大多數CURL示例都是將本地文件上傳到遠程HTTP POST頁面。
我該如何處理從我的用戶HTTP表單接收文件,在'tickethelper'中處理這個文件並將其發佈到'TICKETSYSTEMURL'?
- 以色列
現在我的問題是。我是否放棄原來的名字?我做了一個print_r($ _ FILES),我看到了原始名稱和文件的臨時路徑。當我的其他應用程序發佈文件時,它將是/ tmp/kwsnWjwn而不是'FriendlyName.xls'? – 2009-12-16 21:38:58
以色列洛佩茲,你會失去原來的名字使用libcurl。我不相信你可以使用libcurl來設置這個值,儘管其他工具可能會允許它。但是,您可以使用PHP的move_uploaded_file()函數將臨時文件移動/重命名爲系統上的友好名稱,然後在$ post_fields數組中使用該文件。 – bmb 2009-12-16 22:03:45