用 Laravel 写了一个图床网站 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
HanSonJ
V2EX    分享创造

用 Laravel 写了一个图床网站

  •  
  •   HanSonJ
    HanSon 2017-04-10 10:16:03 +08:00 6096 次点击
    这是一个创建于 3105 天前的主题,其中的信息可能已经有所发展或是发生改变。

    file

    项目地址: https://github.com/HanSon/img

    体验地址: http://img.hanc.cc/

    抽了一天时间写了这个微博图床小站,尽管说是用 laravel ,但是后端几乎没有什么工作量,大概也就 20 行的后端代码,几乎都是前端的工作为主。

    后端使用了一个微博上传图床的包 https://github.com/consatan/weibo_image_uploader

    前端主要了解了 drag & drop 以及 clipboard 这个库。

    纯粹闲的蛋疼

    file

    第 1 条附言    2017-04-10 19:40:46 +08:00
    由于新浪图床这个包不算太稳定,最后决定听取 @sinchang 的意见,改成 https://sm.ms 的图床
    74 条回复    2017-04-21 13:13:53 +08:00
    vipwpcom
        1
    vipwpcom  
       2017-04-10 10:52:17 +08:00
    厉害了
    zocome
        2
    zocome  
       2017-04-10 11:31:09 +08:00   1
    传了一个非图片文件之后,直接 alert 500 错误
    ![]( )
    HanSonJ
        3
    HanSonJ  
    OP
       2017-04-10 11:33:52 +08:00
    @zocome #2 什么格式的文件,有点懵,我前后端都有做校验的
    zocome
        4
    zocome  
       2017-04-10 11:34:45 +08:00
    @HanSonJ #3 msi
    tongyang
        5
    tongyang  
       2017-04-10 11:44:22 +08:00
    厉害了
    zhihaofans
        6
    zhihaofans  
       2017-04-10 12:00:08 +08:00 via iPhone
    @zocome msi 不是图片是微软的安装包格式吧
    zocome
        7
    zocome  
       2017-04-10 12:07:08 +08:00
    @zhihaofans #6 看我 2 楼回复 我直接说了非图片文件
    HanSonJ
        8
    HanSonJ  
    OP
       2017-04-10 12:10:20 +08:00
    @zocome #7 什么浏览器, Chrome 的话应该没问题
    zocome
        9
    zocome  
       2017-04-10 12:13:52 +08:00
    @HanSonJ #8 就是 Chrome
    lijinma
        10
    lijinma  
       2017-04-10 12:24:17 +08:00
    赞一个哈。
    HanSonJ
        11
    HanSonJ  
    OP
       2017-04-10 12:31:49 +08:00
    @zocome #9 我不信,你再试试,是拖拽还是按钮
    hzwei
        12
    hzwei  
       2017-04-10 12:54:09 +08:00 via Android
    那么测试一下
    hzwei
        13
    hzwei  
       2017-04-10 12:56:17 +08:00 via Android
    哇,很不错呢。 @HanSonJ 楼主,这个图床上传有什么限制呢?
    jamfer
        14
    jamfer  
       2017-04-10 12:59:37 +08:00
    问一下上传是后端处理的么?
    HanSonJ
        15
    HanSonJ  
    OP
       2017-04-10 13:02:07 +08:00
    @hzwei #13 我这边限制了 5M 的大小,仅限图片格式


    @jamfer #14 是的,我这里的后端代码不超 20 行,当然用了其他上传包,上传到微博图床
    zocome
        16
    zocome  
       2017-04-10 13:07:25 +08:00
    @HanSonJ #11 还是这样,按钮,传的是一个 12.7MB 的 msi 安装包
    HanSonJ
        17
    HanSonJ  
    OP
       2017-04-10 13:11:13 +08:00
    @zocome #16 嗯,我重现出来了,两个不一样大小的一个能提示一个报错,我改改
    hzwei
        18
    hzwei  
       2017-04-10 13:55:55 +08:00 via Android
    @HanSonJ #15 嗯,好的谢谢。
    xJogger
        19
    xJogger  
       2017-04-10 13:58:25 +08:00 via Android
    ![]( )



    测试一下。
    fhefh
        20
    fhefh  
       2017-04-10 14:19:38 +08:00
    我上传一个苹果 app 显示 Error: Request failed with status code 500
    HanSonJ
        21
    HanSonJ  
    OP
       2017-04-10 14:25:01 +08:00
    @fhefh #20 input 忘记加 图片格式筛选了,晚上改
    luozhaofu
        22
    luozhaofu  
       2017-04-10 14:35:58 +08:00
    ![]( )
    mahui
        23
    mahui  
       2017-04-10 14:42:50 +08:00
    ![]( )
    传到 sina 。感觉不错。会不会被封呢?
    HanSonJ
        24
    HanSonJ  
    OP
       2017-04-10 14:45:09 +08:00
    @mahui #23 还好吧,我用 V2EX 的插件也是上传到微博的
    zhihaofans
        25
    zhihaofans  
       2017-04-10 15:18:06 +08:00
    @zocome 为什么要用图床传非图片文件
    zocome
        26
    zocome  
       2017-04-10 15:21:55 +08:00
    @zhihaofans #25 传图片文件就没意思了 传个非图片文件看看会不会报错更有趣
    HanSonJ
        27
    HanSonJ  
    OP
       2017-04-10 15:25:10 +08:00
    @zocome #26 做这个的时候有想过所以都有做校验,毕竟传个木马就不得了了
    zocome
        28
    zocome  
       2017-04-10 15:26:52 +08:00
    @HanSonJ #27 想法很美好,但还是被我一不小心钻了漏洞
    HanSonJ
        29
    HanSonJ  
    OP
       2017-04-10 15:30:52 +08:00
    @zocome #28 刚看日志,只是文件过大的异常
    Mark7Dai
        30
    Mark7Dai  
       2017-04-10 16:15:25 +08:00
    ![]( )
    YV4usGtvaOIAeXIa
        31
    YV4usGtvaOIAeXIa  
       2017-04-10 16:25:29 +08:00
    当初我还在用微博图床的时候。。 HTTPS 还存在问题。。。现在居然没问题了。。
    xwj1024
        32
    xwj1024  
       2017-04-10 16:49:36 +08:00
    ![]( )
    sinchang
        33
    sinchang  
       2017-04-10 16:53:48 +08:00
    自己之前搞的 https://u.nu/pic , 使用的是 https://sm.ms 的 api
    HanSonJ
        34
    HanSonJ  
    OP
       2017-04-10 17:02:59 +08:00
    @sinchang #33 这个 API 不错,如果微博图床挂了我就用这个好了,比较稳
    cmlz
        35
    cmlz  
       2017-04-10 17:08:53 +08:00
    test
    alwayshere
        36
    alwayshere  
       2017-04-10 17:25:14 +08:00
    搞不明白,图床这么简单的网站,需要用框架,而且是 lumen 这样的复杂框架么?如果是我的话,一个 index.html 、一个 upload.php 就搞定, css 和 js 太简单写进 index.html 就行了,至于这么复杂么?
    HanSonJ
        37
    HanSonJ  
    OP
       2017-04-10 17:31:50 +08:00   1
    @alwayshere #36

    1 、 laravel 不等于 lumen
    2 、 laravel 自带验证
    3 、这是一种信仰
    HanSonJ
        38
    HanSonJ  
    OP
       2017-04-10 19:42:21 +08:00
    @zocome #28 前端上修复你的问题了
    manhere
        39
    manhere  
       2017-04-10 19:54:27 +08:00
    hanson 很高产啊 @laravel-china
    kimwang
        40
    kimwang  
       2017-04-10 20:42:54 +08:00
    也是上传中,图片大小只有 30K 多点。
    HanSonJ
        41
    HanSonJ  
    OP
       2017-04-10 20:47:00 +08:00
    @manhere #39 还好


    @kimwang #40 再试一次,我这里小图秒发
    oojiayu
        42
    oojiayu  
       2017-04-10 21:58:40 +08:00
    https://github.com/Aqours/Weibo-Picture-Store

    这是我用得最顺手的一个微博图床了
    jcuan
        43
    jcuan  
       2017-04-10 22:25:54 +08:00 via Smartisan T1
    说到图床,一般的图床后边图片巨多巨多的时候,会不会清理图片额一直很好奇这个问题
    HanSonJ
        44
    HanSonJ  
    OP
       2017-04-10 22:28:52 +08:00
    @jcuan #43 不会,因为存储值不了几个钱
    aitaii
        45
    aitaii  
       2017-04-10 22:38:52 +08:00
    ![]( https://ooo.0o0.ooo/2017/04/10/58eb98e5937e9.jpg)
    cheng12308
        46
    cheng12308  
       2017-04-10 22:45:49 +08:00 via iPhone
    这个不错,正好需要做个上床页面,直接扒了楼主的前端页面到 yii 框架了
    woshinide300yuan
        47
    woshinide300yuan  
       2017-04-11 01:13:50 +08:00
    好奇 SM.MS 是谁在维护,体验很棒,还有 API ,这得多大的开支哦。
    woshinide300yuan
        48
    woshinide300yuan  
       2017-04-11 01:14:42 +08:00   1
    除了不能多选, LZ 完美了!!!!
    zhihaofans
        49
    zhihaofans  
       2017-04-11 01:39:10 +08:00 via iPhone
    @woshinide300yuan @Showfom 嗯,发给你了。不过建议你可以加一个策略,不要允许其他一些短网址继续用你的服务来缩(隐)短(藏)。
    zhihaofans
        50
    zhihaofans  
       2017-04-11 01:40:22 +08:00 via iPhone
    @woshinide300yuan 擦,粘贴用户名时点到了发送!
    是这位大佬→@Showfom
    fuxkcsdn
        51
    fuxkcsdn  
       2017-04-11 02:14:47 +08:00 via iPhone
    我该感谢楼主帮忙推广吗
    一天涨了 18 stars
    fuxkcsdn
        52
    fuxkcsdn  
       2017-04-11 02:18:13 +08:00 via iPhone
    "由于新浪图床这个包不算太稳定"是说我的包不稳定?还是说新浪图床不稳定???
    我的包不稳定的话,是否有错误日志?
    或者怎么个不稳定法?

    BTW , sm.ms 官网就有拖拽上传功能啊
    msg7086
        53
    msg7086  
       2017-04-11 02:34:11 +08:00
    为什么不直接用 sm ?
    parvin
        54
    parvin  
       2017-04-11 07:37:40 +08:00 via Android
    ![]( https://ooo.0o0.ooo/2017/04/11/58ec1710292b2.jpg)
    HanSonJ
        55
    HanSonJ  
    OP
       2017-04-11 08:56:51 +08:00
    @fuxkcsdn #52 新浪的登录机制问题,我一天要传两次 cookie 才行,鉴于这个我改为了 sm.ms
    HanSonJ
        56
    HanSonJ  
    OP
       2017-04-11 08:58:17 +08:00
    @woshinide300yuan #48 谢谢,主要考虑到多选要考虑页面的展示方式,就懒得做了


    @msg7086 #53 现在已经用了 sm 了
    takashiki
        57
    takashiki  
       2017-04-11 09:14:05 +08:00
    对啊,如果用 sm.ms 的话还开发图床做什么呢
    takashiki
        58
    takashiki  
       2017-04-11 09:14:54 +08:00
    @HanSonJ #55 他这个包不是会模拟登录的么?
    HanSonJ
        59
    HanSonJ  
    OP
       2017-04-11 09:15:13 +08:00
    @takashiki #57

    1 、一开始是用新浪图床
    2 、这是个铺垫 t/353975
    HanSonJ
        60
    HanSonJ  
    OP
       2017-04-11 09:15:37 +08:00
    @takashiki #58 对啊,包作者在楼上
    takashiki
        61
    takashiki  
       2017-04-11 09:17:22 +08:00
    @HanSonJ #59 额,我的意思是本身 sm.ms 就是个图床,既有拖拽上传的前端控件,又有 api 支持,已经比较完善了,为什么还要绕一层呢?

    还有那个包既然自动模拟登录的话,怎么会要一天传两次 cookie 呢?
    HanSonJ
        62
    HanSonJ  
    OP
       2017-04-11 09:25:52 +08:00
    @takashiki #61

    1 、新浪有 IP 检测登录异常的机制
    2 、 API 支持不就是为了绕一层?
    3 、你没有认真看我说的铺垫吧
    takashiki
        63
    takashiki  
       2017-04-11 09:33:42 +08:00
    @HanSonJ #62

    1 、好吧,知道你说的不稳定的具体原因了
    2 、 3 、我个人觉得你说的铺垫的情况应该主要目的不是做图床了吧, api 支持的话一般来说是方便封装 sdk 吧,如果用 sm.ms 这种的话应该就是像你使用微软小冰的服务一样封装出一个包出来,给项目来用这种
    HanSonJ
        64
    HanSonJ  
    OP
       2017-04-11 09:36:50 +08:00
    @takashiki #63 这就要说我做这个项目的初衷了,纯粹是周日那天有点蛋疼想找点东西写,然后就写了图床了,顺便学习一下拖拽方面的 JS ,至于我说的铺垫,也是周一突然想起来有这个东西,想着也许可以加上去,让图床更加好玩,其实都是自用+分享。

    做点对自己有用或者对别人有帮助的项目感觉挺好的
    ChenPeiPei
        65
    ChenPeiPei  
       2017-04-11 09:38:33 +08:00
    test
    ![]( https://ooo.0o0.ooo/2017/04/11/58ec3366ddd9f.png)
    takashiki
        66
    takashiki  
       2017-04-11 09:39:45 +08:00
    @HanSonJ #64 嗯,还是很支持楼主的。
    xxdd
        67
    xxdd  
       2017-04-11 09:39:58 +08:00
    https://ooo.0o0.ooo/2017/04/11/58ec33cf09cee.jpg
    fuxkcsdn
        68
    fuxkcsdn  
       2017-04-11 12:23:07 +08:00 via iPhone
    @HanSonJ 既然是 cookie 问题,这不算是包不稳定啊这是新浪问题了,换其他封装方案这个问题也还是存在的
    HanSonJ
        69
    HanSonJ  
    OP
       2017-04-11 13:03:11 +08:00
    @fuxkcsdn #68 我表述问题,不过还是期待你的包能尽快解决验证码问题
    peinhu
        70
    peinhu  
       2017-04-11 13:39:10 +08:00
    如果用新浪图床你这个还是有点用的,因为新浪上传图片比较麻烦,但是 sm.ms 上传本身就很方便。。
    HanSonJ
        71
    HanSonJ  
    OP
       2017-04-11 13:43:07 +08:00
    @peinhu #70 这个需要大家共同完善了,因为新浪检测登录异常,可以在原来的包上检测到后做些处理
    zhihaofans
        72
    zhihaofans  
       2017-04-11 19:51:36 +08:00
    @HanSonJ 报错了好伤心
    https://ooo.0o0.ooo/2017/04/11/58ecc340e9908.png
    zhihaofans
        73
    zhihaofans  
       2017-04-11 19:59:56 +08:00
    @HanSonJ 原来是我忘记 composer install 了
    fuxkcsdn
        74
    fuxkcsdn  
       2017-04-21 13:13:53 +08:00
    @HanSonJ 验证码问题已解决
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3505 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 10:32 PVG 18:32 LAX 03:32 JFK 06:32
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86