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

用 Laravel 写了一个图床网站

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

    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
    ![]( )
    Jestom
        31
    Jestom  
       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 、这是个铺垫 https://www.v2ex.com/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   ·   我们的愿景   ·   实用小工具   ·   3550 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:19 · PVG 19:19 · LAX 04:19 · JFK 07:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.