ajax上传文件是怎么实现的
发布于 13 年前 作者 jialezhang 39538 次预览 最后一次回复是 13 年前 来自
想用jquery发送请求到服务器,但是不知道选择文件之后,该用怎么样数据方式传送过去。看到jquery里面写的文件格式只有xml,html,json,jsonp,text等,其他的文件是要专程这些格式才可以的么,那么怎么去转呢,然后$.ajax{}该怎么去写,搜到的尽是form表单。貌似论坛的markdown上传图片中的是新创建了一个form表单,然后将file以post的方式交由upload.js处理的。有没有可能像这样的格式利用ajax上传,然后服务器返回文件存储的地址
<input type = “file” name = “image_upload”>
然后js来发送请求?
15 回复
我用javascript做了一个简单的文件上传,看能否对你有帮助。
jQuery方式好像有提供一个叫$.ajaxFileUpload的方式 上传可以google一下。
可以使用jquery.form 这个jquery插件
这个是文件内容是哪里传过去的哈,FormData是怎么去定义的?
那就是一定要使用form才可以提交?
@jialezhang
就是你要上传的文件可以直接把表单放进去,你可以查看一下FormData方法,不过好像只支持html5
@iln168 好的。多谢啦
@jialezhang 下面代码就是我的思路,你可以参考一下
单纯的用AJAX上传文件貌似只有HTML5才能支持,如果要支持所有的浏览器有两种办法,一是用iframe提交form,另外就是用flash,jQuery的ajaxFileUpload用的是flash,不过它用flash和js交互的方式获取了上传进度,效果还是不错的
关键问题不在于form,只要你能把数据按照HTTP协议的格式组装就OK,但目前来说任何方式最终都还是实现了一个form,把数据封装了。
@jialezhang 对要有form
HTML5貌似实现了ajax上传文件, 否则ajax是不能上传文件的, 目前所谓的ajax文件上传无非就是iframe/flash, 因为xhr没有multipart
嗯嗯,嘗試了下base64,還不錯
要的就是這個form
嗯嗯,發現了,所以一般還是得靠form
这个这个,真的可行吗。我在想可不可以把filename = /etc/passwd呢?