ImgURL Pro帮助文档

ImgURL是一款使用PHP开发的图床程序,分社区版和专业版(Pro),专业版支持七牛、FTP、S3等多种外部存储。

介绍

ImgURL首个版本诞生于2017年12月,经过重构 + 多个版本更新,于2019年7月上线ImgURL Pro专业版图床程序。ImgURL社区版将继续维护,但是功能有别于专业版。

img

  1. 如果仅是个人或内部使用一般社区版即可满足需要
  2. 若您需要多个外部存储,同时需要开放给其它用户使用,建议选择专业版。专业版使用MySQL数据库,性能更好。社区版使用SQLite 3数据库,该数据库对并发支持不是很好,。

功能对比

img

专业版特点

环境要求

专业版演示

其他

ImgURL定价为198元/域名(不限制子域名),可享受6个月技术支持,和长期更新。

安装

购买授权

ImgURL Pro需要进行授权,需要先前往:http://shop.imgurl.org/order 购买授权,购买后系统会将授权文件发送到您填写的邮箱(注意垃圾箱),邮件内容大致如下,请妥善保管下图中红框标识的内容。

img

下载安装程序

专业版最新下载地址:https://dwz.ovh/8

修改配置文件

  1. 将站点目录下的config.simple.php复制一份命名为config.php
  2. 将邮件里面的key填写到config.php里面的$config['key'] 这一项

img

  1. 将邮件里面的授权文件xxx.txt上传到data/目录下

新建数据库

  1. 请确保您已经安装了MySQL数据库(需要大于等于5.6)并新建一个空的数据库
  2. 然后将data/imgurl_simple.sql 导入到新建的数据库中
  3. 将站点根目录的db.config.simple.php复制一份命名为db.config.php
  4. 在db.config.php填写正确的数据库名称、用户名、密码

img

配置伪静态

Apache

如果您使用的Apache一般不用再进行设置,默认已经内置Apache重写规则,位于站点根目录的.htaccess,内容如下:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Nginx

将下面的规则添加到Nginx server段内,别忘记重载一次nginx

location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~* \.(db3|json)$ {
  deny all;
}
location ~* ^/(temp|upload|imgs|data|application|static|system)/.*.(php|php5)$ {
    return 403;
}

IIS 7+

以下规则适用于IIS 7以上,在站点根目录创建一个 web.config 文件,并添加以下内容:

<?xml version="1.0" encoding="UTF-8"?>
  <configuration>
      <system.webServer>
        <rewrite>
      <rules>
        <rule name="Rule" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
            <add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
        </rule>
      </rules>
    </rewrite> 
      </system.webServer>
</configuration>

安装

正常情况下,访问您的域名即可看到安装界面,根据页面提示设置网站的账号、密码即可。

img

宝塔面板可以参考:https://www.xiaoz.me/archives/12081 安装所需组件。

基本使用

图片上传

上传功能没什么好说的,界面已经比较清晰明了,需要一提的是如果您选择粘贴上传,必须将鼠标移动到上传框内,否则上传不会有反应。

img

探索发现

点击导航菜单的探索发现按钮可以查阅游客上传的图片(管理员上传的图片不会在探索发现显示),可以根据类型来进行基本筛选。

img

探索发现页面鼠标移动到图片上

  1. 如果单击图片可以放大
  2. 如果是点击蓝色按钮会生成不同格式的链接供用户使用
  3. 点击蓝色地球按钮会进入探索发现页面
  4. 红色垃圾桶按钮可以删除图片(仅管理员登录后有权限)

img

URL上传

ImgURL后台支持URL上传,输入图片的URL链接即可,一次最多支持10个,该功能仅开放给管理员使用,游客无法使用。

img

外部存储

ImgURL Pro目前支持本地、Backblaze B2、腾讯云COS、FTP、七牛云等存储方式。

外部存储

存储方案

ImgURL Pro目前支持本地、Backblaze B2、腾讯云COS、FTP、七牛云等存储方式(后期可能将支持更多)

在后台 - 系统设置 - 存储方案可以看到所有存储设置。

存储方案选择

注意事项

本地存储和FTP存储,域名设置后面没有斜杠(/)外,其余的存储在设置的时候必须有斜杠(/),否则会存在异常。

其它说明

img

  1. 如果游客上传设置为“否”,则游客无法选择该上传方式,管理员依然可以选择。
  2. 如果开关为“关闭”,则无论是管理员还是游客都无法选择该上传方式。
外部存储

本地存储

本地存储图片是保存在服务器的,会占用服务器磁盘空间、带宽等资源,该存储是默认的(无法关闭上传),一般不需要额外设置,如有需要可以单独为本地存储绑定一个CDN域名。(注意:本地存储的域名最后没有斜杠(/)

img

绑定CDN域名思路

假设您创建了一个站点A,并将图床安装到了A,如果希望图片通过CDN域名来访问,只需要做如下操作。

  1. 在站点A额外绑定一个域名B
  2. 然后到第三方CDN服务商(如CloudFlare)对域名B启用CDN加速
  3. 最后打开ImgURL后台 - 系统设置 - 存储方案 - 本地 - 填写B域名并启用
外部存储

Backblaze B2

关于Backblaze

Backblaze是一家国外的备份、存储提供商,B2存储有免费10G的额度,价格非常低廉,如果存储1G的数据,仅需5$/月,如果有需要的可以前往:https://www.backblaze.com/ 进行注册。

获取密钥

登录之后在后台B2云存储 - 创建一个桶 - 权限设置为公开,如下图。(如果您打开不是中文界面,可以在B2网页右下方设置为中文语言

img

接下来我们需要获取4个重要的参数,用于B2 API设置。

打开后台B2云存储 - App Keys,同时点击“生成新的主应用程序密钥”(只会出现一次,请妥善保存)

img

上面我们已经获取到“KeyID”和“主程序密钥”2个参数了,继续切换到“B2云存储” - 桶,可以查看到刚刚创建的桶“imgurl”有一个“桶身份证”把它记录下来。

img

接下来点击“上传/下载按钮”往里面随便传一个文件,点击文件详情,获取友好的URL地址,比如:https://f002.backblazeb2.com/file/imgurl/imgs/2019/06/a91bf049535ce20a.jpg

img

我们只需要https://f002.backblazeb2.com/file/imgurl/ 这部分就行了,这样我们4个参数已经获取完毕,分别是是:<KeyID><主程序密钥><桶身份证><友好URL>

修改配置文件

打开站点根目录的config.php ,填写对应的信息,只需要填写下面三项(其余选项不填写):

img

启用B2存储

打开ImgURL后台 - 系统设置 - 存储方案 - 对B2存储进行设置,绑定域名填写上面获取到的“友好URL”,并开启允许上传。

img

启用CloudFlare CDN

如果需要对B2存储启用CloudFlare CDN可以参考:Backblaze B2,低价的对象存储,支持接入CloudFlare CDN

注意事项

外部存储

腾讯COS

COS是腾讯提供的对象存储服务,全称为Cloud Object Storage,COS

新建bucket

在腾讯云后台 - 根据提示创建存储桶。

img

获取密钥

直接访问:https://console.cloud.tencent.com/cam/capi 获取需要的密钥信息,如果没有自行点击新建密钥即可。

img

这个页面我们需要3个参数,分别为<APPID><SecretId><SecretKey>把它保存下来。

获取COS地域

在创建存储桶的时候会让你选择存储桶的地区,对应地区域名列表,请参考:https://cloud.tencent.com/document/product/436/6224

假如存储桶地区为“广州(华南)”我们需要的地址为“cos.ap-guangzhou.myqcloud.com

修改配置文件

打开站点根目录下的config.php 找到腾讯COS设置,填写对应的信息:

启用腾讯COS

打开ImgURL后台 - 系统设置 - 存储方案 - 腾讯COS - 设置COS绑定域名并进行启用即可。

img

注意事项

外部存储

FTP

在使用FTP存储之前,请确保已经有正常可用的FTP服务,同时确保PHP已经支持FTP组件,可以在ImgURL Pro后台首页查看是否支持FTP组件。

img

适用场景

FTP存储方式非常灵活,可以将图片存储在你想要的服务器上。比如您图床安装在A服务器,绑定了A域名,但是希望将图片上传到B服务器,使用B域名来访问图片,您只需要:

  1. 在B服务器新建一个站点,绑定B域名
  2. 在B服务器开设一个FTP账号,目录指向到B站点
  3. 修改config.php 配置文件,设置FTP信息
  4. 在ImgURL后台 - 系统设置 - 存储方案 - FTP,填写B域名的信息,并启用即可

修改配置文件

打开站点根目录下的config.php文件,找到FTP设置,填写FTP地址、账号、密码等信息。

启用FTP存储

在ImgURL后台 - 系统设置 - 存储方案 - FTP,填写FTP绑定域名,并启用。

img

宝塔面板无法上传的问题

修改宝塔配置pure-ftp配置文件 /www/server/pure-ftpd/etc/pure-ftpd.conf

TLS 1

改成

TLS 0

然后重启下FTP: /etc/init.d/pure-ftpd restart

注意事项

外部存储

七牛云

自ImgURL Pro v1.1之后开始支持七牛云存储

新建存储空间

在七牛云后台 - 对象存储 - 新建存储空间,如下截图。

img

获取密钥

后台 - 个人中心 - 密钥管理,或者登录后直接访问:https://portal.qiniu.com/user/key 获取AccessKey/SecretKey,如下图。

img

修改配置文件

打开 config.php 找到七牛云设置,填写对应信息。

img

启用七牛云存储

打开ImgURL后台 - 系统设置 - 存储方案 - 七牛云 - 设置七牛云空间绑定域名并进行启用即可。

img

注意事项

升级

重要提醒

升级之前请备数据(包括数据库),升级之前请备份数据(包括数据库),升级之前请备份数据(包括数据库),未备份数据导致升级出现异常本人不承担任何责任。

此方法适用于ImgURL Pro(专业版),社区版(免费版)请参考社区版方法进行升级。

查看版本号

登录ImgURL后台(首页)底部可以查看当前版本号,如下截图当前版本号为**v1.0,**请根据自身对应版本号进行升级,注意:不可跨版本升级,比如v1.0直接跳过v1.1升级为v1.2

img

v1.0升级v1.1

  1. 先备份当前数据(包括数据库)
  2. 下载v1.1源码:http://soft.xiaoz.org/source/imgurl/imgurl-pro_v1.1.tar.gz 解压覆盖
  3. 修改 config.php 在底部添加如下代码(七牛云存储需要使用)
/*-------------------------------------七牛云设置-------------------------------------*/
//请先阅读帮助文档:https://dwz.ovh/a
$config['qiniu']['AccessKey']	=	'';
$config['qiniu']['SecretKey']	=	'';
$config['qiniu']['bucket']	=	'';
//上传地址,参见:https://developer.qiniu.com/kodo/manual/1671/region-endpoint
$config['qiniu']['up_host']	=	'';
/*-------------------------------------七牛云设置END-------------------------------------*/

v1.1升级v1.12

使用CDN

ImgURL支持对每个存储单独设置域名,建议对这些域名启用CDN,而不是对主站(访问域名)启用CDN,如果需要对主站(访问域名)启用CDN,请按照如下设置,否则可能无法正常使用。

CDN缓存设置

以下路径请不要设置缓存,否则无法正常使用。

其它路径可根据自身需要设置缓存。

管理维护

登录后台

ImgURL底部有个“login”按钮可以登录后台,或者访问您的域名:http://domian.com/user/login 进行登录。

img

上传限制

默认情况下单张图片不得超过5M,游客每天限制上传10张图片。您可以在后台 - 系统设置 - 上传限制做出修改。

img

  1. 上传数量如果为0则不允许游客上传
  2. 上传大小最大允许为10(Mb)

图片压缩

ImgURL使用Tinypng提供的图片压缩接口,因此需要先访问:http://tinypng.org/ 申请API

然后在【系统设置】 - 图片处理 - 图片压缩进行设置,必须填写2个,您可以用多个账号申请Tinypng key或者创建多个key填写即可。(注意:仅本地上传的图片可以压缩,其它存储类型不支持压缩

img

在图片管理中可以看到压缩按钮,白色背景说明该图片还没有压缩,蓝色背景说明图片已经压缩。

img

图片鉴黄

ImgURL使用Moderate Content提供的API来进行图片鉴黄,因此您需要先在https://www.moderatecontent.com/ 申请API key

然后打开【系统设置】 - 图片鉴黄进行开启。

img

API识别无法做到100%准确,识别后的图片会被标记为可疑图片等待管理员审核,您可以在【图片管理】 - 可疑图片进行查看,如果存在误判,可点击下图中的按钮取消。

img

添加评论代码

ImgURL支持添加评论代码(如disqus),方法如下:

  1. 创建一个application/views/user/comment.html文件
  2. 然后将评论代码添加到comment.html这个文件 3 . 最后访问查看效果

img

重置密码

如果用户名或密码遗忘,可通过以下方法重置。

1.创建一个data/password.txt文件 2.然后访问http:/domain.com/user/resetpass 根据页面提示完成重置

img

3.最后删除data/password.txt文件(一定要删除这个文件,否则任何人都可以重置密码

设置提示

首页的提示可以在后台 - 系统设置 - 站点设置 - 首页公告进行设置(支持HTML代码)

img

img

常见问题

为什么我上传图片后探索发现不显示我刚刚上传的图片?

探索发现仅显示游客上传的图片,如果是管理员上传的则不会显示到探索发现中。

为什么某些图片上传后Delete Link(删除链接)显示是空的?

Delete Link自始至终只会显示一次,ImgURL具有图片去重功能,也就是说假如这张图片之前已经上传过,则不会重复上传到服务器,直接从数据库返回信息,因此则不再显示Delete Link

我之前用的社区版可以升级为专业版吗?

可以,社区版使用的SQLite 3数据库,而专业版使用的MySQL数据库,数据库结构和字段都发生了变化,您购买专业版后请联系作者协助升级。

我可以更改域名授权吗?

可以,更改域名授权的规则如下。

  1. 假如您购买时填写的域名为test.abc.com,后期想更改子域名,比如更改为img.abc.com,可以不限次更换,前往https://shop.imgurl.org/home/change_auth 自主更换授权即可。
  2. 假如您购买时填写的域名为test.abc.com,后期想更换为test.123.com,有1次更换机会,需要联系作者手动处理。
  3. 也就是说更换子域名不限次,更换主域名(顶级域名)只有1次机会。

账号、密码正确,登录后提示权限不足?

如果使用的360浏览器,请切换为极速模式,或使用Google Chrome浏览器或Firefox

为什么粘贴上传的图片,命名选择了存储方式,但依然上传到了本地?

这个是已知问题,由于技术架构原因,目前粘贴上传仅支持上传到本地,后期会逐渐优化,感谢支持。

插件

油猴脚本

ImgURL还开发了便利的油猴脚本,可在任意网页将图片上传至ImgURL,参考《使用油猴脚本(Tamper monkey)在任意网页上传图片

ImgURL单页版

ImgURL单页版依赖于ImgURL后端API,纯静态页面,不需要PHP等环境,适合轻度使用,详细说明请参考:《使用ImgURL单页版将图片上传至ImgURL图床

使用ShareX + ImgURL,截图后自动上传

通过ShareX截图工具,再配合ImgURL 提供的上传API,可实现截图后自动上传到ImgURL并返回图片链接,具体请参考:使用ShareX + ImgURL,截图后自动上传、自动返回图片链接

将ImgURL集成到网站

通过xiaoz提供的js脚本,可实现将ImgURL集成到您自己的网站,具体参考:将ImgURL图床集成到您的网站

其它插件

开发中...敬请期待!

上传API

自ImgURL Pro v1.1开始,支持token参数,token需要在后台生成(当传递token参数上传数量不受限制),如下图。

img

上传接口

请求参数

参数名 类型 是否必须 参数说明
file file 支持jpg/jgeg/png/gif/bmp/webp格式
token string 如果传递token则视为管理员上传

返回值

如果请求成功,返回结果如下

{
	"code": 200,
	"id": 35,
	"imgid": "ead2649f723a346c",
	"relative_path": "/imgs/2019/10/ead2649f723a346c.png",
	"url": "http://pro.imgurl.org/imgs/2019/10/ead2649f723a346c.png",
	"thumbnail_url": "http://pro.imgurl.org/imgs/2019/10/ead2649f723a346c_thumb.png",
	"width": 1381,
	"height": 645,
	"delete": "http://pro.imgurl.org/delete/849a3ae44d87b641"
}
参数名 类型 参数说明
code int 状态码,200:成功,0:失败
id int id(唯一)
imgid string 图片id(唯一)
relative_path string 图片相对路径
url string 图片URL
thumbnail_url string 缩略图URL
width int 图片宽
height int 图片高
delete string 图片删除链接,若此图片之前已上传过,返回空

如果失败,返回结果为

{"code":0,"msg":"The filetype you are attempting to upload is not allowed."}

演示代码

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>ImgURL上传测试</title>
    <meta name="generator" content="EverEdit" />
    <meta name="author" content="" />
    <meta name="keywords" content="" />
    <meta name="description" content="" />
</head>
<body>
    <form enctype="multipart/form-data" method="post" action="http://test.imgurl.org/api/upload" id="upform">
    <input type="file" name="file" class="up-file">
    <input type="submit" id="btn" value="开始上传" class="btn">
    </form>
</body>
</html>

探索发现

探索发现返回游客最新上传的图片,不显示管理员图片和可疑图片,说明如下。

返回的结果如下:

[{
	"id": "15",
	"imgid": "9fde71fb50e4efe3",
	"path": "\/imgs\/2019\/04\/9fde71fb50e4efe3.png",
	"thumb_path": "\/imgs\/2019\/04\/9fde71fb50e4efe3_thumb.png",
	"date": "2019-04-10 16:41",
	"compression": "0",
	"level": "unknown",
	"mime": "image\/png",
	"width": "720",
	"height": "400",
	"views": "1",
	"ext": ".png",
	"client_name": "yz.png"
}, {
	"id": "14",
	"imgid": "e28dc32685726892",
	"path": "\/imgs\/2019\/04\/e28dc32685726892.png",
	"thumb_path": "\/imgs\/2019\/04\/e28dc32685726892_thumb.png",
	"date": "2019-04-10 16:37",
	"compression": "0",
	"level": "unknown",
	"mime": "image\/png",
	"width": "816",
	"height": "373",
	"views": "0",
	"ext": ".png",
	"client_name": "snipaste_20180908_164604.png"
}]

返回参数说明

其它参数

除了默认返回游客最新的16张图片外,还支持对图片进行筛选,比如gif动态图片,只需要在/api/found追加参数即可。

更新日志

v1.1

v1.0