我使用这个简单的上传和调整PHP项目的图像来完成我的项目。 https://gist.github.com/zeuxisoo/910107/483c7b6082dcc484d7b4cee21aad12650c53e416 但我不知道如何在上传后重命名文件。 我想重命名文件并将其上传到服务器以及数据库中。以下是代码:
public void UpdatePerson(PersonDetailsDTO dto)
{
var person = _personRepository.GetById(dto.PersonId);
Address address = new Address(dto.getStreet1, dto.getStreet2,...);
PersonalDetails details = new PersonalDetails(dto.getFirstName,dto.getLastName(),...);
person.updatePersonalDetails(details);
person.updateAddress(address);
_personRepository.save(person);
}
我使用了很多方法,例如basename 不管怎么说,任何想法?感谢
答案 0 :(得分:1)
而不是使用move_uploaded_file
,而不是按照下面给出的代码示例使用它。
$temp = explode(".", $_FILES["file"]["name"]);
$newfilename = round(microtime(true)) . '.' . end($temp);
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename);
答案 1 :(得分:1)
你可以这样做
public function run() {
$total = count($this->files);
for($i=0; $i<$total; $i++) {
if (empty($this->files['name'][$i]) === false) {
$tempName = explode(".", $this->files['name'][$i]);
$newName = "IMAGE_NAME"; //generate unique string to avoid conflict
$newfilename = $newName . '.' . end($tempName );
if (move_uploaded_file($this->files['tmp_name'][$i], $this->store_directory.'/'.$newfilename) == false) {
$this->errors['type'] = "run";
$this->errors['file_name'] = $this->files['name'][$i];
}
}
}
return empty($this->errors);
}
在$newName
中,您可以为文件生成新名称。
更新
为避免冲突,每次生成名称时都使用唯一字符串。
答案 2 :(得分:1)
这是您的解决方案
public function run(){
$total = count($this->files);
for($i=0; $i<$total; $i++){
if(empty($this->files['name'][$i]) === false){
$ext = substr(strtolower(strrchr($this->files['name'][$i], '.')), 1); //get the extension
$new_name = 'new-name'.date('dmY').$ext;
if (move_uploaded_file($this->files['tmp_name'][$i], $this->store_directory.'/'.$new_name) == false) {
$this->errors['type'] = "run";
$this->errors['file_name'] = $this->files['name'][$i];
}
}
}
return empty($this->errors);
}