我有一种算法可以自动命名上传图像,但是我从数据库中给出了带有ID的名称,但是数据库中的数据尚不存在,因此我先插入数据,然后获得最大ID为图片名称(您可以在下面的附件代码中清楚地找到它,并且ID是自动递增的),问题是我认为如果服务器收到大量上传图片的请求,则该图片将具有错误的名称或ID为不属于它。有没有关于我的问题的最佳实践?还是您有更好的算法?请帮助我
此代码是使用phpignigner用PHP编写的
if(isset($_FILES['gambarProduk'])){
$this->db->select_max('idProduk','maks');
$this->db->insert('gambarProduk',array('idProduk'=>$this->db->get('produk')->result()[0]->maks));
$config['upload_path'] = 'images/produk/';
$config['allowed_types'] = 'gif|bmp|jpg|png|jpeg';
$this->db->select_max('idGambar','maks');
$config['file_name'] = $this->db->get('gambarProduk')->result()[0]->maks;
$extension = pathinfo($_FILES["gambarProduk"]['name'], PATHINFO_EXTENSION);
$fullpath = $config['upload_path'].$config['file_name'].'.'.$extension;
if(file_exists($fullpath)){
unlink($fullpath);
}
$this->db->where('idGambar',$config['file_name']);
$this->db->update('gambarProduk',array('extension'=>$extension));
$this->load->library('upload',$config);
if(!$this->upload->do_upload('gambarProduk')){
$this->session->set_flashdata('uploadGambarProduk',2);
}
}
答案 0 :(得分:0)
使用服务器时间并为该时间添加一些随机数,以避免在上传多张图像时出现问题。
$imgName = $_FILES["images"]["name"];
$imgTempName = $_FILES["images"]["tmp_name"];
$target_dir = "images/";
$target_file = $target_dir . basename($imgName);
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
//file name uses server time + add random number
$fileName = $target_dir . round(microtime(true) * 10000) . rand() . "." .$imageFileType;
$source_img = $imgTempName;
$destination_img = $fileName;