上传一个文件到后台 是将什么传到了后台?

-Jw- 发布于 2013/07/25 13:07
阅读 4K+
收藏 1

url地址?

想用ajax 提交张图片 有啥好的思路么

加载中
0
拉风的道长
拉风的道长
字节流!~
拉风的道长
拉风的道长
回复 @-Jw- : JS不了解。难道这样的方法都没有?
-Jw-
-Jw-
有木有办法用js 将图片转成我可以自己传的字节流
0
斯诺登
斯诺登
生成一个隐藏的iframe,将表单提交到这个iframe里,所谓的ajax上传文件,都是这样做的
-Jw-
-Jw-
这个我有看过 还没尝试这个 我今晚回家尝试 在公司不敢花太多时间试这个
0
明月照大江
明月照大江

文件上传的本质,是将文件的字节序列,告诉给服务器,使服务器在服务器硬盘上写入这些字节序列,达到文件保存的目的。

目前网络上的文件上传有多种,一个是HTTP协议,一个FTP,一个是Falsh之类的插件等。

以简单的HTTP 协议为例子,HTTP协议中文件上传的方法是PUT 字段,但是在实际应用中大家还是以 POST方法为主要上传手段,requets的实体来传输文件的内容。

使用ajax到上传图片到服务器,就是读取图片内容,构造request的首部字段,常用的是multipart,也有使用 chunked的,将图片的信息写入实体,然后将requets发送到服务器,同时URL指明的是往哪一个地址传输内容,后台拿到request之后解析,然后处理,如果是JAVA就是servlet,apache的第三方库,提供一个解析和提取数据的库,也可以自己写,就是有些麻烦。

基本流程就是这样了。

我建议使用ajax,这样不会影响原来的页面,而且后台还可以专门写一个文件上传的统一服务,这样所有的上传都可以走这个服务了

小k宝贝
小k宝贝
给表单添加一个 target="hidden_frame" 值指向一个iframe标签,iframe里面处理完上传数据后,调用父窗口里的脚本将返回的链接填入表单 回复 @明月照大江 :
明月照大江
明月照大江
回复 @小k宝贝 : 跨域 和 js限制是,前端脚本的安全性问题,本质上所有的文件上传都是这样的原理,照着这个主线开发不就好了么。何况只是上传文件
小k宝贝
小k宝贝
这个是纯”理论“回答。。。JS是有很多限制的,不能直接跨域,也不能访问计算机内的文件,也不能直接访问其它域名下的cookie等等
-Jw-
-Jw-
现在主要是ajax无法直接上传文件
0
小k宝贝
小k宝贝
有直接写好了的ajax上传类库,通过隐藏iframe的,非要自己写?
-Jw-
-Jw-
有啥好介绍么
0
郏高阳
郏高阳
后台获取文件URL,然后后台使用字节流的方式读取。
-Jw-
-Jw-
这个不成立
0
geminiblue
geminiblue
swfupload   表示很实用!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-Jw-
-Jw-
今晚试试
0
萌龙
萌龙

偶然一次,我们在使用代理测试的情况下,发现flash的上传控件无法使用代理,导致LBS出现问题,因此在有代理的情况下,不建议使用flash上传控件。

除了flash之外,还有上面提到的隐藏iframe方法也可以打到模拟ajax上传的功能。
说到这里提一下,其实使用以前的javascript ajax是不能上传图片的,为了安全,浏览器限制js访问本地文件。但是html5出现后,情况发生了改变,不仅可以操作本地文件,还可以通过新版本的ajax来上传文件(配合File模块)。

在这里推荐一个upload组件,已经在多个项目中使用了:
https://github.com/Widen/fine-uploader

0
中山野鬼
中山野鬼
编程语言帮程序员做的太多,结果最终把程序员养成了什么也不了解的应用者。。。。
-Jw-
-Jw-
恩恩 明白 先熬过语言和逻辑这个阶段 会慢慢去了解协议等等的
0
小k宝贝
小k宝贝

引用来自“中山野鬼”的答案

编程语言帮程序员做的太多,结果最终把程序员养成了什么也不了解的应用者。。。。
程序不就是为了编写应用去解决问题的吗?难道一定要回到以前用二进制去编码才算程序员?以前的那些编码能做什么?就只能简单的输出计算!就是因为有了很多程序片断的复用才有现在用PS做出的特别炫的特效,3D电影中的各种华丽效果。


ajax文件上传,不是用ajax去访问文件,也确实js不能访问本地文件,这个是通过一个隐藏的iframe+input file文件上传实现的,IE6以上都OK~~http://www.phpletter.com/Demo/AjaxFileUpload-Demo/
返回顶部
顶部