包装成Form表单?
使用Flash?(感觉flash淘汰该弃用了)
其他?
======== 6:15 ========
补充下内容:
刚才看stackoverflow
的文章jQuery Ajax File Upload
有提到两种方法:
使用IFrame
.
使用XHR2
,支持FormData
,上传文件,但是兼容性的话:IE 10+, Firefox 4.0+, Chrome 7+, Safari 5+, Opera 12+
看看这个基于Nodejs的大文件上传:http://www.famanoder.com/h5la...
http://www.famanoder.com/boke...
一下代码从我的项目中剥离出来的, 大概就是基于jQuery封装了一下http请求,下面的代码是其中文件上传的部分。
调用方法示例如下:
var formData = new FormData(); formData.append("file", event.target.file.files[i]); formData.append("key", new Blob( data, {type: "application/json"} )); http.request .upload(url, formData) .success(function (result) { // 请求成功的处理 }) .sendUpload();
http = {}; function Request(method, url) { this.method = method; this.url = url; this._data = null; this._formData = null; this._dataType = 'json'; this._contentType = null; this._success = null; this._failure = null; this.error = function (xhr, textStatus, errorThrown) { // 错误时的处理 }.bind(this); } Request.prototype.sendUpload = function () { var req = this; $.ajax({ url: this.url, type: this.method, data: this._formData, dataType: this._dataType, processData: false, contentType: false, timeout: 300000, success: function (result, status, xhr) { // 请求成功时的通用处理 }, error: this.error, }); } http.request.upload = function (url, formData) { return new Request('POST', url).formData(formData).dataType('json'); }
plupload,七牛javascript端也是通过这个来上传图片的
用 iframe,感觉不是 AJAX 异步上传了吧?
可以用百度的webuploader插件,很好用。附上网站:http://fex.baidu.com/webuploa...
就像你说的,一般用插件,比较方便,至于插件原理,你应该先去了解之后再提问。
html5已经可以上传文件了
http://blog.csdn.net/small_ri...
可以直接使用表单。
用input(type='file')
进行文件选择,再使用FormData
进行Ajax数据传输,把input的文件数据加入。
参考:FormData
文件上传一般来说有以下几种方法:
传统flash上传
隐藏iframe框上传
表单数据提交
HTML5的新工具——File API
推荐后两种,File API推荐看看这篇文章https://segmentfault.com/a/11...