不使用HTML5,JS怎样上传文件?

如题,怎样上传图片呢

可能大家误解我的意思了,我是说不通过表单的方式,直接通过js进行文件传输

阅读 11.9k
15 个回答

无法实现,不通过表单,JS是无法访问到文件的,JS运行在浏览器中,浏览器并没有为JS直接暴露可以操作文件的接口,只能通过HTML的input表单元素。其实这很容易理解,如果网页上的JS能自由操作本地的文件的话,那不乱套了?

form或者flash

插件webuploader

HTML提供了一个HTML DOM FileUpload 对象,可以接收二进制文件数据流。
通过<input type="file">获取文件之后,上传服务器即可。

可以参考一下这个回答:
https://segmentfault.com/q/10...

<input type="file" /> 如果不兼容ie的话可以用这个

不知道为何还没结题,就JS来讲,只能是读取数据,post到后台,ajaxPost(url,参数,callback); 到对应的servlet进行判断最后数据返回前台渲染,只能这样啊 你还想怎么办?

用nodejs写后台咯,前端js是不可能不通过表单读写文件的。

浏览器有安全限制

不通过表单上传,可以给input绑定change事件,当input的值有变化时触发函数,调用js的FileReader把本地图片读成base64,可以直接作为图片的src显示,base64就是一个字符串,此时可以用ajax把这个值传给后台。后台接受到这个值有相应的解码方法,可以把base64转换成原来的图片。一般的选中图片预览功能都是把选中的图片读成base64。下面是图片读取成base64的代码。

    function readFile(obj) {
        var file = obj.files[0];
        //判断类型是不是图片
        if (!/image\/\w+/.test(file.type)) {
            alert("请确保文件为图像类型!");
            return false;
        }
        var reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload = function () {
            var base64= this.result;
        }
    }
  1. html 的input + formdata

  2. 隐藏iframe + input 直接提交

  3. flash

如果连<input type="file">都没有那肯定没法上传(^_^)

uploader

推荐问题
宣传栏