gpt4 book ai didi

php - 根据输入创建每个用户的唯一文件夹,并使用 php 将图像保存在该文件夹内

转载 作者:行者123 更新时间:2023-11-29 16:21:26 24 4
gpt4 key购买 nike

我正在从事创建大学入学在线考试的项目。我正在寻找上传图像并使用用户序列 ID 创建文件夹的解决方案,就像根据 mysql 数据库主增量 id 将图像保存在文件夹内一样。

这是我的解决方案,其中图像上传到已创建的名为 uploads 的文件夹中。如何根据我的需要修改它。

<?php
session_start();
include('../connect.php');
$a = $_POST['name'];

// query

$file_name = strtolower($_FILES['file']['name']);
$file_ext = substr($file_name, strrpos($file_name, '.'));
$prefix = 'your_site_name_'.md5(time()*rand(1, 9999));
$file_name_new = $prefix.$file_ext;
$path = '../uploads/'.$file_name_new;


/* check if the file uploaded successfully */
if(@move_uploaded_file($_FILES['file']['tmp_name'], $path)) {

//do your write to the database filename and other details
$sql = "INSERT INTO student (name,file) VALUES (:a,:h)";
$q = $db->prepare($sql);
$q->execute(array(':a'=>$a,':h'=>$file_name_new));
header("location: students.php");

}
?>

最佳答案

第一:上传文件时要小心,没有正确检查其类型;

第二:正如 Sean 提到的,这种方法可能会失控。

--

以下示例更改了您尝试的步骤。

首先插入用户以获取其 ID,然后使用该用户在“../uploads”下创建文件夹。

这样您不需要移动文件两次(将文件移动到../uploads,插入用户,然后再次将文件移动到< em>../uploads/userID)

<?php

...

$sql = "INSERT INTO student (name,file) VALUES (:a,:h)";
$q = $db->prepare($sql);
$q->execute(array(':a'=>$a,':h'=>$file_name_new));

// Get user id
$studentId = $db->lastInsertId();

// Create path with new userId just inserted
$path = "../uploads/$studentId/";
if(!file_exists($path)) { // maybe "&& !is_dir($path)" ?
// IMPORTANT NOTE: the second argument is the permission of the folder. 0777 is the default and may cause security flaws
mkdir($path, 0777, true);
}

// Move the uploaded file to new path with the userId
@move_uploaded_file($_FILES['file']['tmp_name'], $path.$file_name_new);

我认为你需要在插入之前检查用户是否已经存在(但我不知道你的项目的详细信息)

关于php - 根据输入创建每个用户的唯一文件夹,并使用 php 将图像保存在该文件夹内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54490020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com