2 回答
TA贡献1909条经验 获得超7个赞
您可以在文件名之前使用时间戳、下划线、用户 ID,例如
$filename=time()."_".$UserId.$yourFileName
您可以将会话中的用户 ID 和 $_FILES 中的文件名
然后每个文件都有唯一的名称。
TA贡献2065条经验 获得超14个赞
在这种情况下,策略会很简单。您可以在将文件上传到存储之前覆盖文件名,并将真实名称和生成的名称存储在数据库中,用户主键在表中。之后,您可以简单地在 HTML5 下载属性中给他们一个带有原始文件名的链接。
看看伪代码。
<?php
$original_filename = $_FILES['file']['name'];
$filename = time() . '_' . $filename;
if(move_uploaded_file($_FILES["file"]["tmp_name"], $filename))
{
$sql = "INSERT INTO media(user_id, file_name, original_name) VALUES ( $userId, $filename, $original_filename);
mysqli_query($conn, $sql);
} ?>
现在您可以通过 html5 下载属性显示链接以使用原始文件名下载。
<?php
$sql = "SELECT * FROM medias where user_id = $userId LIMIT 1";
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($result);
// Free result set
mysqli_free_result($result);
mysqli_close($con);
?>
<a href="<?= $row['filename'] ?>" download="<?= $row['original_filename']; ?>"><?= $row['original_filename']; ?></a>
- 2 回答
- 0 关注
- 101 浏览
添加回答
举报