Files
pages/2019/06/24/up.html
2025-12-31 16:00:29 +00:00

392 lines
26 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>如何利用MySQL数据库制作一个图站 | Mayx的博客</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="如何利用MySQL数据库制作一个图站" />
<meta name="author" content="mayx" />
<meta property="og:locale" content="zh_CN" />
<meta name="description" content="最近白嫖了一个500GB的数据库想想怎么利用一下" />
<meta property="og:description" content="最近白嫖了一个500GB的数据库想想怎么利用一下" />
<meta property="og:site_name" content="Mayx的博客" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2019-06-24T00:00:00+08:00" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="如何利用MySQL数据库制作一个图站" />
<meta name="google-site-verification" content="huTYdEesm8NaFymixMNqflyCp6Jfvd615j5Wq1i2PHc" />
<meta name="msvalidate.01" content="0ADFCE64B3557DC4DC5F2DC224C5FDDD" />
<meta name="yandex-verification" content="fc0e535abed800be" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"mayx"},"dateModified":"2019-06-24T00:00:00+08:00","datePublished":"2019-06-24T00:00:00+08:00","description":"最近白嫖了一个500GB的数据库想想怎么利用一下","headline":"如何利用MySQL数据库制作一个图站","mainEntityOfPage":{"@type":"WebPage","@id":"/2019/06/24/up.html"},"publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://avatars0.githubusercontent.com/u/17966333"},"name":"mayx"},"url":"/2019/06/24/up.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="canonical" href="https://mabbs.github.io/2019/06/24/up.html" />
<link type="application/atom+xml" rel="alternate" href="/atom.xml" title="Mayx的博客" />
<link rel="alternate" type="application/rss+xml" title="Mayx的博客(RSS)" href="/rss.xml" />
<link rel="alternate" type="application/json" title="Mayx的博客(JSON Feed)" href="/feed.json" />
<link rel="stylesheet" href="/assets/css/style.css?v=1767196818" />
<!--[if !IE]> -->
<link rel="stylesheet" href="/Live2dHistoire/live2d/css/live2d.css" />
<!-- <![endif]-->
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Mayx的博客" />
<link rel="webmention" href="https://webmention.io/mabbs.github.io/webmention" />
<link rel="pingback" href="https://webmention.io/mabbs.github.io/xmlrpc" />
<link rel="preconnect" href="https://summary.mayx.eu.org" crossorigin="anonymous" />
<link rel="prefetch" href="https://www.blogsclub.org/badge/mabbs.github.io" as="image" />
<link rel="blogroll" type="text/xml" href="/blogroll.opml" />
<link rel="me" href="https://github.com/Mabbs" />
<script src="/assets/js/jquery.min.js"></script>
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script>
var lastUpdated = new Date("Thu, 01 Jan 2026 00:00:18 +0800");
var BlogAPI = "https://summary.mayx.eu.org";
</script>
<script src="/assets/js/main.js"></script>
<!--[if !IE]> -->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="async" src="https://www.googletagmanager.com/gtag/js?id=UA-137710294-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-137710294-1');
</script>
<script src="/assets/js/instant.page.js" type="module"></script>
<!-- <![endif]-->
</head>
<body>
<!--[if !IE]> --><noscript><marquee style="top: -15px; position: relative;"><small>发现当前浏览器没有启用JavaScript这不影响你的浏览但可能会有一些功能无法使用……</small></marquee></noscript><!-- <![endif]-->
<!--[if IE]><marquee style="top: -15px; position: relative;"><small>发现当前浏览器为Internet Explorer这不影响你的浏览但可能会有一些功能无法使用……</small></marquee><![endif]-->
<div class="wrapper">
<header class="h-card">
<h1><a class="u-url u-uid p-name" rel="me" href="/">Mayx的博客</a></h1>
<img src="https://avatars0.githubusercontent.com/u/17966333" fetchpriority="high" class="u-photo" alt="Logo" style="width: 90%; max-width: 300px; max-height: 300px;" />
<p class="p-note">Mayx's Home Page</p>
<form action="/search.html">
<input type="text" name="keyword" id="search-input-all" placeholder="Search blog posts.." />&#160;<input type="submit" value="搜索" />
</form>
<br />
<p class="view"><a class="u-url" href="/Mabbs/">About me</a></p>
<ul class="downloads">
<li style="width: 270px; border-right: none;"><a href="/MayxBlog.tgz">Download <strong>TGZ File</strong></a></li>
</ul>
</header>
<section class="h-entry">
<small><time class="date dt-published" datetime="2019-06-24T00:00:00+08:00">24 June 2019</time> - 字数统计2209 - 阅读大约需要8分钟 - Hits: <span id="/2019/06/24/up.html" class="visitors">Loading...</span></small>
<h1 class="p-name">如何利用MySQL数据库制作一个图站</h1>
<p class="view">by <a class="p-author h-card" href="//github.com/Mabbs">mayx</a></p>
<div id="outdate" style="display:none;">
<hr /><p>
这是一篇创建于 <span id="outime"></span> 天前的文章,其中的信息可能已经有所发展或是发生改变。
</p>
</div>
<script>
daysold = Math.floor((new Date().getTime() - new Date("Mon, 24 Jun 2019 00:00:00 +0800").getTime()) / (24 * 60 * 60 * 1000));
if (daysold > 90) {
document.getElementById("outdate").style.display = "block";
document.getElementById("outime").innerHTML = daysold;
}
</script>
<hr />
<b>AI摘要</b>
<p id="ai-output">这篇文章讲述了如何利用MySQL数据库创建一个简单的图站服务。首先作者介绍了如何建立了一个名为`FileUP`的数据库表用于存储文件信息如文件名、内容和大小。接着PHP代码展示了处理文件上传、查询和下载的过程提到了MySQL的文件大小限制大约16MB以及存在的断点续传问题。作者提到想通过切片上传技术来解决文件大小限制但需前端支持并给出了一个WebUploader的链接。文章最后提到暂时不打算改进这个方案但可能会继续思考如何实现断点续传。</p>
<hr />
<ul><li><a href="#talk-is-cheapshow-me-the-code">Talk is cheap,show me the code</a></li><li><a href="#缺点">缺点</a></li><li><a href="#演示随时gg">演示随时GG</a></li><li><a href="#下一步改进的打算">下一步改进的打算</a></li></ul>
<hr />
<main class="post-content e-content" role="main"><p>最近白嫖了一个500GB的数据库想想怎么利用一下<!--more--></p>
<h1 id="talk-is-cheapshow-me-the-code">
<a href="#talk-is-cheapshow-me-the-code"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> Talk is cheap,show me the code
</h1>
<p>数据库建表:</p>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="nv">`FileUP`</span> <span class="p">(</span>
<span class="nv">`ID`</span> <span class="nb">int</span><span class="p">(</span><span class="mi">11</span><span class="p">)</span> <span class="k">NOT</span> <span class="k">NULL</span> <span class="n">AUTO_INCREMENT</span><span class="p">,</span>
<span class="nv">`Name`</span> <span class="nb">text</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
<span class="nv">`File`</span> <span class="nb">longblob</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
<span class="nv">`Size`</span> <span class="nb">int</span><span class="p">(</span><span class="mi">11</span><span class="p">)</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
<span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="nv">`ID`</span><span class="p">)</span>
<span class="p">)</span> <span class="n">ENGINE</span><span class="o">=</span><span class="n">InnoDB</span> <span class="k">DEFAULT</span> <span class="n">CHARSET</span><span class="o">=</span><span class="n">gb2312</span><span class="p">;</span>
</code></pre></div></div>
<p>PHP代码</p>
<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">&lt;?php</span>
<span class="nv">$con</span><span class="o">=</span><span class="nb">mysqli_connect</span><span class="p">(</span><span class="s2">"数据库地址"</span><span class="p">,</span><span class="s2">"用户名"</span><span class="p">,</span><span class="s2">"密码"</span><span class="p">,</span><span class="s2">"数据库名"</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nf">mysqli_connect_errno</span><span class="p">(</span><span class="nv">$con</span><span class="p">))</span>
<span class="p">{</span>
<span class="k">die</span><span class="p">(</span><span class="s2">"连接 MySQL 失败: "</span> <span class="mf">.</span> <span class="nf">mysqli_connect_error</span><span class="p">());</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span> <span class="nv">$_GET</span><span class="p">[</span><span class="no">ID</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">''</span> <span class="p">)</span> <span class="p">{</span>
<span class="nb">header</span><span class="p">(</span><span class="s1">'Access-Control-Allow-Origin: *'</span><span class="p">);</span>
<span class="nv">$sql</span> <span class="o">=</span> <span class="s2">"SELECT * FROM `FileUP` WHERE `ID` = '"</span><span class="mf">.</span><span class="nb">addslashes</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="no">ID</span><span class="p">])</span><span class="mf">.</span><span class="s2">"' "</span><span class="p">;</span>
<span class="nv">$result</span> <span class="o">=</span> <span class="nv">$con</span><span class="o">-&gt;</span><span class="nf">query</span><span class="p">(</span><span class="nv">$sql</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$result</span><span class="o">-&gt;</span><span class="n">num_rows</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">while</span><span class="p">(</span><span class="nv">$row</span> <span class="o">=</span> <span class="nv">$result</span><span class="o">-&gt;</span><span class="nf">fetch_assoc</span><span class="p">()){</span>
<span class="nb">Header</span> <span class="p">(</span> <span class="s2">"Content-type: application/octet-stream"</span> <span class="p">);</span>
<span class="nb">Header</span> <span class="p">(</span> <span class="s2">"Accept-Ranges: bytes"</span> <span class="p">);</span>
<span class="nb">Header</span> <span class="p">(</span> <span class="s2">"Accept-Length: "</span> <span class="mf">.</span> <span class="nv">$row</span><span class="p">[</span><span class="s2">"Size"</span><span class="p">]</span> <span class="p">);</span>
<span class="nb">Header</span> <span class="p">(</span> <span class="s2">"Content-Disposition: attachment; filename="</span> <span class="mf">.</span> <span class="nv">$row</span><span class="p">[</span><span class="s2">"Name"</span><span class="p">]</span> <span class="p">);</span>
<span class="k">echo</span> <span class="nv">$row</span><span class="p">[</span><span class="s2">"File"</span><span class="p">];</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">else</span> <span class="p">{</span>
<span class="nb">header</span><span class="p">(</span><span class="s1">'HTTP/1.1 404 NOT FOUND'</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">echo</span> <span class="s1">'&lt;title&gt;Mayx图床&lt;/title&gt;
&lt;h1&gt;Mayx图床&lt;/h1&gt;&lt;hr&gt;
请选择需要上传的文件
&lt;form enctype="multipart/form-data" method="post" action=""&gt;
&lt;input type="file" name="File" /&gt;
&lt;input type="submit" name="submit" value="submit" /&gt;
&lt;/form&gt;
&lt;br /&gt;'</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span> <span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'REQUEST_METHOD'</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"POST"</span> <span class="p">)</span> <span class="p">{</span>
<span class="nv">$error</span> <span class="o">=</span> <span class="nv">$_FILES</span><span class="p">[</span><span class="s1">'File'</span><span class="p">][</span><span class="s1">'error'</span><span class="p">];</span>
<span class="nv">$tmp_name</span> <span class="o">=</span> <span class="nv">$_FILES</span><span class="p">[</span><span class="s1">'File'</span><span class="p">][</span><span class="s1">'tmp_name'</span><span class="p">];</span>
<span class="nv">$size</span> <span class="o">=</span> <span class="nv">$_FILES</span><span class="p">[</span><span class="s1">'File'</span><span class="p">][</span><span class="s1">'size'</span><span class="p">];</span>
<span class="nv">$name</span> <span class="o">=</span> <span class="nv">$_FILES</span><span class="p">[</span><span class="s1">'File'</span><span class="p">][</span><span class="s1">'name'</span><span class="p">];</span>
<span class="k">print</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$error</span> <span class="o">==</span> <span class="no">UPLOAD_ERR_OK</span> <span class="o">&amp;&amp;</span> <span class="nv">$size</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nv">$fp</span> <span class="o">=</span> <span class="nb">fopen</span><span class="p">(</span><span class="nv">$tmp_name</span><span class="p">,</span> <span class="s1">'r'</span><span class="p">);</span>
<span class="nv">$content</span> <span class="o">=</span> <span class="nb">fread</span><span class="p">(</span><span class="nv">$fp</span><span class="p">,</span> <span class="nv">$size</span><span class="p">);</span>
<span class="nb">fclose</span><span class="p">(</span><span class="nv">$fp</span><span class="p">);</span>
<span class="nv">$content</span> <span class="o">=</span> <span class="nb">addslashes</span><span class="p">(</span><span class="nv">$content</span><span class="p">);</span>
<span class="nv">$sql</span> <span class="o">=</span> <span class="s2">"INSERT INTO `FileUP` (`Name`, `File`, `Size`)
VALUES ('"</span><span class="mf">.</span><span class="nv">$name</span><span class="mf">.</span><span class="s2">"', '"</span><span class="mf">.</span><span class="nv">$content</span><span class="mf">.</span><span class="s2">"', '"</span><span class="mf">.</span><span class="nv">$size</span><span class="mf">.</span><span class="s2">"');"</span><span class="p">;</span>
<span class="nv">$con</span><span class="o">-&gt;</span><span class="nf">query</span><span class="p">(</span><span class="nv">$sql</span><span class="p">);</span>
<span class="nv">$sql</span> <span class="o">=</span> <span class="s2">"select @@identity;"</span><span class="p">;</span>
<span class="nv">$result</span> <span class="o">=</span> <span class="nv">$con</span><span class="o">-&gt;</span><span class="nf">query</span><span class="p">(</span><span class="nv">$sql</span><span class="p">);</span>
<span class="k">while</span><span class="p">(</span><span class="nv">$row</span> <span class="o">=</span> <span class="nv">$result</span><span class="o">-&gt;</span><span class="nf">fetch_assoc</span><span class="p">())</span> <span class="p">{</span>
<span class="k">echo</span> <span class="s1">'上传完成,文件下载地址:&lt;a href="//'</span><span class="mf">.</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'HTTP_HOST'</span><span class="p">]</span><span class="mf">.</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'REQUEST_URI'</span><span class="p">]</span><span class="mf">.</span><span class="s2">"?ID="</span><span class="mf">.</span><span class="nv">$row</span><span class="p">[</span><span class="s1">'@@identity'</span><span class="p">]</span><span class="mf">.</span><span class="s1">'" &gt;'</span><span class="mf">.</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'HTTP_X_FORWARDED_PROTO'</span><span class="p">]</span><span class="mf">.</span><span class="s1">'://'</span><span class="mf">.</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'HTTP_HOST'</span><span class="p">]</span><span class="mf">.</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">'REQUEST_URI'</span><span class="p">]</span><span class="mf">.</span><span class="s2">"?ID="</span><span class="mf">.</span><span class="nv">$row</span><span class="p">[</span><span class="s1">'@@identity'</span><span class="p">]</span><span class="mf">.</span><span class="s1">'&lt;/a&gt;'</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">echo</span> <span class="s2">"文件上传错误!"</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">echo</span> <span class="s1">'&lt;hr /&gt;
&lt;center&gt;&lt;a href="https://mabbs.github.io/"&gt;By Mayx&lt;/a&gt;&lt;/center&gt;'</span><span class="p">;</span>
<span class="p">}</span>
<span class="nf">mysqli_close</span><span class="p">(</span><span class="nv">$con</span><span class="p">);</span>
</code></pre></div></div>
<h1 id="缺点">
<a href="#缺点"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 缺点
</h1>
<p><del>MySQL保存文件有限制好像只能存16MB左右😓</del>改max_allowed_packet就可以了 </p><p>
另外就是断点续传的问题,这个问题我回头再想一想吧。</p>
<h1 id="演示随时gg">
<a href="#演示随时gg"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 演示随时GG
</h1>
<p><a href="https://mayx.leanapp.cn/up.php">https://mayx.leanapp.cn/up.php</a></p>
<h1 id="下一步改进的打算">
<a href="#下一步改进的打算"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 下一步改进的打算
</h1>
<p><del>想搞成切片上传,这样就没有文件大小上传的限制了。 </p><p>
不过这个好像得前端支持,先放个链接在这里吧:<a href="https://github.com/fex-team/webuploader">https://github.com/fex-team/webuploader</a></del> </p><p>
不打算改进了……</p></main>
<small style="display: block">tags: <a rel="category tag" class="p-category" href="/search.html?keyword=MySQL"><em>MySQL</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=%E6%95%B0%E6%8D%AE%E5%BA%93"><em>数据库</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=%E5%9B%BE%E7%AB%99"><em>图站</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=PHP"><em>PHP</em></a> <span style="float: right;"><a href="https://gitlab.com/mayx/mayx.gitlab.io/tree/master/_posts/2019-06-24-up.md">查看原始文件</a></span></small>
<h4 style="border-bottom: 1px solid #e5e5e5;margin: 2em 0 5px;">推荐文章</h4>
<p id="suggest-container">Loading...</p>
<script>
var suggest = $("#suggest-container");
$.get(BlogAPI + "/suggest?id=/2019/06/24/up.html&update=" + lastUpdated.valueOf(), function (data) {
if (data.length) {
getSearchJSON(function (search) {
suggest.empty();
var searchMap = {};
for (var i = 0; i < search.length; i++) {
searchMap[search[i].url] = search[i];
}
var tooltip = $('<div class="content-tooltip"></div>').appendTo('body').hide();
for (var j = 0; j < data.length; j++) {
var item = searchMap[data[j].id];
if (item) {
var link = $('<a href="' + item.url + '">' + item.title + '</a>');
var contentPreview = item.content.substring(0, 100);
if (item.content.length > 100) {
contentPreview += "……";
}
link.hover(
function(e) {
tooltip.text($(this).data('content'))
.css({
top: e.pageY + 10,
left: e.pageX + 10
})
.show();
},
function() {
tooltip.hide();
}
).mousemove(function(e) {
tooltip.css({
top: e.pageY + 10,
left: e.pageX + 10
});
}).data('content', contentPreview);
suggest.append(link);
suggest.append(' - ' + item.date + '<br />');
}
}
});
} else {
suggest.html("暂无推荐文章……");
}
});
</script>
<br />
<div class="pagination">
<span class="prev">
<a href="/2019/06/22/counter.html">
上一篇:如何自己写一个博客计数器
</a>
</span>
<br />
<span class="next">
<a href="/2019/07/01/mabbs.html">
下一篇重建MaBBS的计划
</a>
</span>
</div>
<!--[if !IE]> -->
<link rel="stylesheet" href="/assets/css/gitalk.css">
<script src="/assets/js/gitalk.min.js"></script>
<div id="gitalk-container"></div>
<script>
var gitalk = new Gitalk({
clientID: '36557aec4c3cb04f7ac6',
clientSecret: 'ac32993299751cb5a9ba81cf2b171cca65879cdb',
repo: 'mabbs.github.io',
owner: 'Mabbs',
admin: ['Mabbs'],
id: '/2019/06/24/up', // Ensure uniqueness and length less than 50
distractionFreeMode: false, // Facebook-like distraction free mode
proxy: "https://cors-anywhere.mayx.eu.org/?https://github.com/login/oauth/access_token"
})
gitalk.render('gitalk-container')
</script>
<!-- <![endif]-->
</section>
<!--[if !IE]> -->
<div id="landlord" style="left:5px;bottom:0px;">
<div class="message" style="opacity:0"></div>
<canvas id="live2d" width="500" height="560" class="live2d"></canvas>
<div class="live_talk_input_body">
<form id="live_talk_input_form">
<div class="live_talk_input_name_body" >
<input type="checkbox" id="load_this" />
<input type="hidden" id="post_id" value="/2019/06/24/up.html" />
<label for="load_this">
<span style="font-size: 11px; color: #fff;">&#160;想问这篇文章</span>
</label>
</div>
<div class="live_talk_input_text_body">
<input name="talk" type="text" class="live_talk_talk white_input" id="AIuserText" autocomplete="off" placeholder="要和我聊什么呀?" />
<button type="submit" class="live_talk_send_btn" id="talk_send">发送</button>
</div>
</form>
</div>
<input name="live_talk" id="live_talk" value="1" type="hidden" />
<div class="live_ico_box" style="display:none;">
<div class="live_ico_item type_info" id="showInfoBtn"></div>
<div class="live_ico_item type_talk" id="showTalkBtn"></div>
<div class="live_ico_item type_music" id="musicButton"></div>
<div class="live_ico_item type_youdu" id="youduButton"></div>
<div class="live_ico_item type_quit" id="hideButton"></div>
<input name="live_statu_val" id="live_statu_val" value="0" type="hidden" />
<audio src="" style="display:none;" id="live2d_bgm" data-bgm="0" preload="none"></audio>
<input id="duType" value="douqilai" type="hidden" />
</div>
</div>
<div id="open_live2d">召唤伊斯特瓦尔</div>
<!-- <![endif]-->
<footer>
<p>
<small>Made with ❤ by Mayx<br />Last updated at 2026-01-01 00:00:18<br /> 总字数614622 - 文章数178 - <a href="/atom.xml" >Atom</a> - <a href="/README.html" >About</a></small>
</p>
</footer>
</div>
<script src="/assets/js/scale.fix.js"></script>
<!--[if !IE]> -->
<script src="/assets/js/main_new.js"></script>
<script src="/Live2dHistoire/live2d/js/live2d.js"></script>
<script src="/Live2dHistoire/live2d/js/message.js"></script>
<!-- <![endif]-->
</body>
</html>