php如何在上传时更改文件名

时间:2018-01-22 18:49:10

标签: php html web

我有这段代码

<?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”谢谢大家的帮助广告说明。

1 个答案:

答案 0 :(得分:1)

首先,将文件名存储在变量中并修剪它。

$filename = trim($_FILES['data']['name']);

然后使用字符串替换函数将空格替换为_(下划线)。

$filename = str_replace(' ','_',$filename);

现在你得到的文件名是无空格的字符串。

希望这可以帮到你。