[英]PHP file upload -> replace special chars didn't work
我現在正在尋找解決方案兩個小時,但是我在網上發現的任何內容都無濟於事...
我有一個帶有上傳表單的網絡服務,兩者都可以正常工作。 我更喜歡JS,我的整個服務都建立在HTML5,CSS3和JS中...但是我的上傳表單是PHP。 我在網上找到了一個腳本,它可以工作,所以很好。 現在我意識到,當我要使用ä,ö,ü和ß等字符上傳文件時,服務存在問題。 不幸的是,在德國,這些是我們語言中常見的字符,因此我必須用其他字符替換它們。
我到處看看,此刻我的代碼如下:
$files = $_FILES['fileselect'];
foreach ($files['error'] as $id => $err) {
if ($err == UPLOAD_ERR_OK) {
$fn = $files['name'][$id];
$search_array = array ('ä', 'ö', 'ü', 'ß');
$replace_array = array ('ae', 'oe', 'ue', 'ss');
$gfn = str_replace($search_array, $replace_array, $fn);
move_uploaded_file(
$files['tmp_name'][$id],
'bildtransfer/' . $gfn
);
echo "<p>Die Datei $gfn wurde hochgeladen.</p>";
}
}
只要文件沒有特殊字符,上傳本身仍然可以使用。 我的文件仍然包含所有特殊字符,似乎還沒有替換?
我需要preg_replace而不是str_replace嗎? 我嘗試過,但是也沒有用...
我希望你能幫幫我? 會很高興的!!! :)
看來您錯誤地使用了$ _FILES數組。 任何錯誤都將存儲在$_FILES['fileselect']['error']
-不需要foreach
語句。
文件的原始名稱存儲在$_FILES['fileselect']['name']
,因此請嘗試在str_replace()
調用中使用該$_FILES['fileselect']['name']
:
$file = $_FILES['fileselect'];
if($file['error'] == UPLOAD_ERR_OK) {
$fn = $file['name'];
$search_array = array ('ä', 'ö', 'ü', 'ß');
$replace_array = array ('ae', 'oe', 'ue', 'ss');
$gfn = str_replace($search_array, $replace_array, $fn);
move_uploaded_file(
$file['tmp_name'],
'bildtransfer/' . $gfn
);
echo "<p>Die Datei $gfn wurde hochgeladen.</p>";
}
老實說,我不知道為什么現在能正常工作! 閱讀有關處理文件上傳的PHP文檔。
要解決此問題,以使您不必麻煩替換字符,請按照@aaron的建議,在發送字符時告訴瀏覽器您正在使用UTF-8:
header('Content-Type: text/html; charset=utf-8');
這可能是編碼問題。 嘗試將標頭中的編碼類型更改為UTF-8。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.