怎么使用 js post 图片 上传? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
onji
V2EX    Javascript

怎么使用 js post 图片 上传?

  •  
  •   onji 2017-07-16 20:01:37 +08:00 5238 次点击
    这是一个创建于 3013 天前的主题,其中的信息可能已经有所发展或是发生改变。

    http://pic.onji.cn/upload.html

    这个是用 html 表单 post 会跳转到 php 文件。 点上传跳到 php 页面输出图片链接。(外链)

    有没有什么办法可以不跳转,直接在本页面显示输出的图片链接吗? JS 可以,但是我不会这个。 有哪位大神可以教下吗?或者私聊也行。[email protected]

    jquery ajax 都不会,求大神帮助。

    24 条回复    2017-07-25 07:45:30 +08:00
    airyland
        1
    airyland  
       2017-07-16 20:02:41 +08:00 via iPhone
    话说不会写也会搜吧
    onji
        2
    onji  
    OP
       2017-07-16 20:03:43 +08:00
    @airyland 搜过,一下午,没解决成功。
    Joan
        3
    Joan  
       2017-07-16 20:28:03 +08:00
    http://yunzhu.iteye.com/blog/2177923
    随便找了个感觉符合需求~~
    onji
        4
    onji  
    OP
       2017-07-16 20:28:56 +08:00
    @Joan 谢谢,迟点我看看。
    sparkle2015
        5
    sparkle2015  
       2017-07-16 20:53:55 +08:00
    1. 后台代码是你们自己控制的吗 (从图上的 url 来看,应该是的)?如果是的话,就修改后台码,让后台在接收图片后,重新渲染 "http://pic.onji.cn/upload.html" 这个 url,并把图片的 url 显示在此页面的 img 元素中,而不是 redirect_to 到新的 url。

    1. 第二种方法,在前端用 ajax 请求,后台接收图片后,发现如果是 ajax 请求,则把图片 url 以 json 形式返回,前端拿到 url 后把它的值设置到 img 的 src 属性中。[示例代码]( https://github.com/baurine/rails-study/blob/master/upload_file_demo/app/views/resumes/new.html.erb)。
    Maxbee
        6
    Maxbee  
       2017-07-16 21:22:26 +08:00 via iPhone
    之前遇到这样的问题。也是尝试了一段时间才试出来。你可以用 input 标签 type 是 file 类型的,选择图片之后监听 change 事件 ,再用 ajax post 图片数据就行。这样页面不会跳转
    popok
        7
    popok  
       2017-07-16 21:41:27 +08:00 via iPhone
    ajax,post 完后,把返回的图片链接地址插到 image 里去
    Wy4q3489O1z996QO
        8
    Wy4q3489O1z996QO  
       2017-07-16 21:47:53 +08:00
    base64(img)
    justtery
        9
    justtery  
       2017-07-16 21:48:54 +08:00 via Android
    去百度搜 bootstrap file input 给你想要的,照着 demo 写就好了
    chairuosen
        10
    chairuosen  
       2017-07-16 22:12:17 +08:00
    这里本质的原因是原生 post 是跳页面的,后续步骤你控制不了,ajax 是不跳页面的,请求过程是可以控制的。
    xiaoz
        11
    xiaoz  
       2017-07-16 22:28:22 +08:00 via iPhone
    还是用 ajax 实现最简单
    mingyun
        12
    mingyun  
       2017-07-16 22:57:00 +08:00
    ajax formdata
    test4zhou
        13
    test4zhou  
       2017-07-16 22:58:01 +08:00
    转 base64
    qiayue
        14
    qiayue  
    PRO
       2017-07-16 23:00:16 +08:00
    有很多 js 图片上传控件,能够显示上传进度,比如 http://www.plupload.com/
    tcsky
        15
    tcsky  
       2017-07-16 23:12:05 +08:00
    v1024
        16
    v1024  
       2017-07-16 23:47:58 +08:00 via iPhone
    表单 target 指向一个隐藏的 iframe 的 id
    gdtv
        17
    gdtv  
       2017-07-17 00:05:03 +08:00
    @romotc
    @test4zhou
    base64 的方法似乎挺耗资源
    Wy4q3489O1z996QO
        18
    Wy4q3489O1z996QO  
       2017-07-17 08:34:04 +08:00
    @gdtv 等你的业务发展到需要考虑这点性能之前早就换到七牛了
    dollarbai
        19
    dollarbai  
       2017-07-17 09:40:31 +08:00
    ajax formdata 这个可以解决问题,不过低版本浏览器不支持这个 formdata 对象。
    对于低版本浏览器,就可以使用前后端公用一种加密解密方式(比如 base64 )
    AJian
        20
    AJian  
       2017-07-17 10:07:20 +08:00
    用 iframe 可以吧
    ibcker
        21
    ibcker  
       2017-07-17 11:05:06 +08:00
    你写个标题的时间就够搜索出答案了,写个帖子明显低效
    onji
        22
    onji  
    OP
       2017-07-17 14:27:40 +08:00
    @ibcker 我当然知道搜索,不是搜索到的东西都真正用得上。
    dtlqwjj
        23
    dtlqwjj  
       2017-07-17 20:32:42 +08:00
    ajax 异步上传图片,通常有 3 种方式
    1.jquery.form
    2.FormData
    3.Filereader 读取图片,base64 编码。
    lavawong
        24
    lavawong  
       2017-07-25 07:45:30 +08:00 via iPhone
    如果要兼容 IE8 建议用 iframe 跨越,google 搜答案
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2664 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 15:24 PVG 23:24 LAX 08:24 JFK 11:24
    Do have faith in what you're doing.
    ubao msn 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