mirror of
				https://github.com/Mabbs/mabbs.github.io
				synced 2025-11-04 04:15:18 +08:00 
			
		
		
		
	
		
			
	
	
		
			101 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			101 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								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>~~    
							 | 
						|||
| 
								 | 
							
								  不打算改进了……
							 |