将文件从PHP服务器保存到数据库是一个常见的需求,可以通过以下步骤实现:
$servername = "数据库服务器地址";
$username = "数据库用户名";
$password = "数据库密码";
$dbname = "数据库名";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$sql = "CREATE TABLE files (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
filename VARCHAR(255) NOT NULL,
filetype VARCHAR(255) NOT NULL,
filesize INT(10) UNSIGNED,
filedata LONGBLOB
)";
if ($conn->query($sql) === TRUE) {
echo "文件表创建成功";
} else {
echo "创建文件表时出错: " . $conn->error;
}
$target_dir = "uploads/"; // 上传文件保存的目录
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); // 上传文件的完整路径
$uploadOk = 1; // 上传状态,默认为1表示上传成功
// 检查文件是否已经存在
if (file_exists($target_file)) {
echo "文件已经存在。";
$uploadOk = 0;
}
// 检查文件大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "文件太大,不能上传。";
$uploadOk = 0;
}
// 允许上传的文件类型
$allowedTypes = array("jpg", "png", "jpeg", "gif");
$fileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
if (!in_array($fileType, $allowedTypes)) {
echo "只允许上传 JPG, JPEG, PNG, GIF 格式的文件。";
$uploadOk = 0;
}
// 检查上传状态
if ($uploadOk == 0) {
echo "文件上传失败。";
} else {
// 读取文件内容
$fileContent = file_get_contents($_FILES["fileToUpload"]["tmp_name"]);
// 准备插入数据库的SQL语句
$sql = "INSERT INTO files (filename, filetype, filesize, filedata) VALUES (?, ?, ?, ?)";
// 创建预处理语句
$stmt = $conn->prepare($sql);
// 绑定参数
$stmt->bind_param("ssis", $_FILES["fileToUpload"]["name"], $fileType, $_FILES["fileToUpload"]["size"], $fileContent);
// 执行预处理语句
if ($stmt->execute()) {
echo "文件上传成功。";
} else {
echo "文件上传失败。";
}
// 关闭预处理语句和数据库连接
$stmt->close();
$conn->close();
}
以上代码中,$_FILES["fileToUpload"]
是文件上传表单字段的名称,可以根据实际情况进行修改。
$sql = "SELECT filename, filetype, filedata FROM files WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $fileId);
$stmt->execute();
$stmt->bind_result($filename, $filetype, $filedata);
$stmt->fetch();
$stmt->close();
header("Content-type: $filetype");
header("Content-Disposition: inline; filename=$filename");
echo $filedata;
以上代码中,$fileId
是要获取的文件的ID,可以根据实际情况进行修改。
这样,你就可以通过PHP将文件保存到数据库并进行查询和使用了。请注意,这只是一个简单的示例,实际应用中可能需要更多的安全性和错误处理。另外,具体的数据库和文件上传配置可能因环境而异,需要根据实际情况进行调整。
云+社区技术沙龙[第14期]
云+未来峰会
云+社区技术沙龙[第12期]
云+社区技术沙龙[第20期]
云+社区技术沙龙[第11期]
serverless days
Hello Serverless 来了
DB TALK 技术分享会
Techo Day
领取专属 10元无门槛券
手把手带您无忧上云