[英]Have A File Download Link/Button Also Update A MySQL Database
我在表格上有一个下载按钮,用于更新 MySQL 数据库,并更新文件的下载次数/下载次数。 我想我可以将download
属性添加到此表单按钮并将 url 提供给文件,以便文件也可以下载。 看来您只能在锚<a>
链接上使用download
属性。 这本身不是问题,我可以像我有按钮一样设置锚链接的样式 - 但我怎样才能得到它,所以当有人单击<a>
链接以及下载图像时,它还会将数据提交到数据库?
提交到 MySQL 数据库的表单按钮的简化版本:
<form method="post">
<button type="submit" name="download">Download</button>
<input type="hidden" name="filename" value="<?php echo $image_filename; ?>">
</form>
“下载”文件链接:
<a download href="localhost/project/image/file.jpg">Download</a>
我还包括了更新数据库以供参考的 PHP function。 这个 function 在下载图像的页面本身上被调用。 注意: $connection
是在函数顶部导入的数据库连接代码。php 文件是 function 所在的文件。
PHP
function downloadCounter($connection, $filename) {
if (isset($_POST['download'])) {
// value from a hidden form element which outputs the filename
$filename = $_POST['filename'];
try {
$sql = "UPDATE lj_imageposts SET downloads = downloads +1 WHERE filename = :filename";
$stmt = $connection->prepare($sql);
$stmt->execute([
':filename' => $filename
]);
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
}
}
您需要在 JS function 中处理这两个操作。 首先你需要更新数据库,然后下载文件
const downloadFile = element => {
const downloadLink = element.getAttribute("href"); //Get element's href value
const updateURL = "example.com/update"; //Your server side file to update db
fetch(updateURL {
method: 'POST',
headers: {'Content-Type', 'application/x-www-form-urlencoded'},
body: `downloadLink=${downloadLink}`
})
.then(result = > {
//If successful, download the file
location.href = downloadLink;
})
.catch(error = > {
//Handle the error
});
};
还有你a
标签
<a onclick="downloadFile(this)" href="localhost/project/image/file.jpg">Download</a>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.