[英]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.