mirror of
https://github.com/Mabbs/mabbs.github.io
synced 2025-09-10 12:25:24 +02:00
Restore deleted repositories
This commit is contained in:
100
_posts/2019-06-24-up.md
Normal file
100
_posts/2019-06-24-up.md
Normal file
@@ -0,0 +1,100 @@
|
||||
---
|
||||
layout: post
|
||||
title: 如何利用MySQL数据库制作一个图站
|
||||
tags: [MySQL, 数据库, 图站, PHP]
|
||||
---
|
||||
|
||||
最近白嫖了一个500GB的数据库,想想怎么利用一下?<!--more-->
|
||||
|
||||
# Talk is cheap,show me the code
|
||||
|
||||
数据库建表:
|
||||
```sql
|
||||
CREATE TABLE `FileUP` (
|
||||
`ID` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`Name` text NOT NULL,
|
||||
`File` longblob NOT NULL,
|
||||
`Size` int(11) NOT NULL,
|
||||
PRIMARY KEY (`ID`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
|
||||
```
|
||||
|
||||
PHP代码:
|
||||
```php
|
||||
<?php
|
||||
$con=mysqli_connect("数据库地址","用户名","密码","数据库名");
|
||||
if (mysqli_connect_errno($con))
|
||||
{
|
||||
die("连接 MySQL 失败: " . mysqli_connect_error());
|
||||
}
|
||||
|
||||
if ( $_GET[ID] != '' ) {
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
$sql = "SELECT * FROM `FileUP` WHERE `ID` = '".addslashes($_GET[ID])."' ";
|
||||
$result = $con->query($sql);
|
||||
if ($result->num_rows > 0) {
|
||||
while($row = $result->fetch_assoc()){
|
||||
Header ( "Content-type: application/octet-stream" );
|
||||
Header ( "Accept-Ranges: bytes" );
|
||||
Header ( "Accept-Length: " . $row["Size"] );
|
||||
Header ( "Content-Disposition: attachment; filename=" . $row["Name"] );
|
||||
echo $row["File"];
|
||||
}
|
||||
}
|
||||
else {
|
||||
header('HTTP/1.1 404 NOT FOUND');
|
||||
}
|
||||
} else {
|
||||
echo '<title>Mayx图床</title>
|
||||
<h1>Mayx图床</h1><hr>
|
||||
请选择需要上传的文件
|
||||
<form enctype="multipart/form-data" method="post" action="">
|
||||
<input type="file" name="File" />
|
||||
<input type="submit" name="submit" value="submit" />
|
||||
</form>
|
||||
<br />';
|
||||
if ( $_SERVER['REQUEST_METHOD'] == "POST" ) {
|
||||
$error = $_FILES['File']['error'];
|
||||
$tmp_name = $_FILES['File']['tmp_name'];
|
||||
$size = $_FILES['File']['size'];
|
||||
$name = $_FILES['File']['name'];
|
||||
print("\n");
|
||||
if ($error == UPLOAD_ERR_OK && $size > 0) {
|
||||
$fp = fopen($tmp_name, 'r');
|
||||
$content = fread($fp, $size);
|
||||
fclose($fp);
|
||||
$content = addslashes($content);
|
||||
$sql = "INSERT INTO `FileUP` (`Name`, `File`, `Size`)
|
||||
VALUES ('".$name."', '".$content."', '".$size."');";
|
||||
$con->query($sql);
|
||||
$sql = "select @@identity;";
|
||||
$result = $con->query($sql);
|
||||
while($row = $result->fetch_assoc()) {
|
||||
echo '上传完成,文件下载地址:<a href="//'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."?ID=".$row['@@identity'].'" >'.$_SERVER['HTTP_X_FORWARDED_PROTO'].'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."?ID=".$row['@@identity'].'</a>';
|
||||
}
|
||||
|
||||
} else {
|
||||
echo "文件上传错误!";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
echo '<hr />
|
||||
<center><a href="https://mabbs.github.io/">By Mayx</a></center>';
|
||||
|
||||
}
|
||||
|
||||
mysqli_close($con);
|
||||
```
|
||||
|
||||
# 缺点
|
||||
~~MySQL保存文件有限制,好像只能存16MB左右😓~~(改max_allowed_packet就可以了)
|
||||
另外就是断点续传的问题,这个问题我回头再想一想吧。
|
||||
|
||||
# 演示(随时GG)
|
||||
<https://mayx.leanapp.cn/up.php>
|
||||
|
||||
# 下一步改进的打算
|
||||
~~想搞成切片上传,这样就没有文件大小上传的限制了。
|
||||
不过这个好像得前端支持,先放个链接在这里吧:<https://github.com/fex-team/webuploader>~~
|
||||
不打算改进了……
|
Reference in New Issue
Block a user