我有这段代码
<?php // display file upload form
if (!isset($_POST['submit'])) { ?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="8000000" /> Select file:
<input type="file" name="data" />
<input type="submit" name="submit" value="Upload File" /></form>
<?php
} else {
// check uploaded file size
if ($_FILES['data']['size'] == 0) {
die("ERROR: Zero byte file upload");
} // check if this is a valid upload
if (!is_uploaded_file($_FILES['data']['tmp_name'])) {
die("ERROR: Not a valid file upload"); } // set the name of the target directory
$uploadDir = "./uploads/"; // copy the uploaded file to the directory
move_uploaded_file($_FILES['data']['tmp_name'], $uploadDir . $_FILES['data']['name']) or die("Cannot copy uploaded file"); // display success message
echo '<p style="text-align: center">
Soubor byl úspěšně nahrán na server. <br>
<a href="index.php" class="button1">Zpět</a>
</p>
' ; } ?>
我有一个问题 - 它有效,将文件上传到服务器,但如果文件名中断,我无法下载。例如,我想上传“我的工资únor.pdf”,但服务器一直在寻找文件“我的”。有没有办法修改此代码以将文件名中的中断更改为“_”?此外,我希望服务器是utf-8字母(因为服务器将文件名更改为愚蠢的名称,例如u?nor)所以如果有一个选项,那也将是伟大的。 (或者只是让php更改文件名inty“my_salary_unor”谢谢大家的帮助广告说明。
答案 0 :(得分:1)
首先,将文件名存储在变量中并修剪它。
$filename = trim($_FILES['data']['name']);
然后使用字符串替换函数将空格替换为_(下划线)。
$filename = str_replace(' ','_',$filename);
现在你得到的文件名是无空格的字符串。
希望这可以帮到你。