有没有一种有效且最佳的算法来自动命名图片或上传任何文件?

时间:2018-12-22 06:39:34

标签: javascript php algorithm

我有一种算法可以自动命名上传图像,但是我从数据库中给出了带有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);
    }
}

1 个答案:

答案 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;