博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTML5 文件域+FileReader 读取文件并上传到服务器(三)
阅读量:6569 次
发布时间:2019-06-24

本文共 3863 字,大约阅读时间需要 12 分钟。

一、读取文件为blob并上传到服务器

HTML

JS

//读取图片实例,并上传到服务器var fileBox = document.getElementById('file');fileBox.onchange = function () {    //获取选择文件的数组    var fileList = fileBox.files;    for (var i = 0; i < fileList.length; i++) {        var file = fileList[i];        uploadFile(file);    }}//关键代码上传到服务器function uploadFile(file) {    var reader = new FileReader();    reader.readAsArrayBuffer(file);    reader.onload = function () {        var blob = new Blob([reader.result]);        //提交到服务器        var fd = new FormData();        fd.append('file', blob);        var ext = file.name.substring(file.name.lastIndexOf('.'));        fd.append('extention', ext);        fd.append('maxsize', 1024*1024*4);//Asp.net 默认一次上传最大4MB        fd.append('isClip', -1);        var xhr = new XMLHttpRequest();        xhr.open('post', '../ashx/upload.ashx', true);        xhr.onreadystatechange = function () {            if (xhr.readyState == 4 && xhr.status == 200) {                var data = eval('(' + xhr.responseText + ')');                console.info(data);                if (data.success) {                    //上传成功                    var imgName = data.msg;                    alert(imgName);                } else {                    alert(data.msg);                }            }        }        //开始发送        xhr.send(fd);    }}

后台C#处理关键代码:

//接收文件HttpRequest req = _Context.Request;string newname = _fileInfo.CreateNewName(newExtention);//接收二级制数据并保存Stream stream = _PostedFile.InputStream;byte[] dataOne = new byte[stream.Length];stream.Read(dataOne, 0, dataOne.Length);FileStream fs = new FileStream(_fileInfo.TempFile + newname, FileMode.Create, FileAccess.Write);try{    fs.Write(dataOne, 0, dataOne.Length);}finally{    fs.Close();    stream.Close();}return newname;

二、读取图片文件,并上传到服务器

HTML

选择文件如下:

JS:

//读取图片实例,并上传到服务器var fileBox = document.getElementById('file');fileBox.onchange = function () {    //获取选择文件的数组    var fileList = fileBox.files;    for (var i = 0; i < fileList.length; i++) {        var file = fileList[i];        //图片类型验证第二种方式        if (/image\/\w+/.test(file.type))            readFile(file);        else            console.log(file.name + ':不是图片');    }}//读取二进制图片文件,并上传到服务器function uploadClick() {    var fileList = fileBox.files;    for (var i = 0; i < fileList.length; i++) {        var file = fileList[i];        //图片类型验证第二种方式        if (/image\/\w+/.test(file.type))            uploadFile(file);        else            console.log(file.name + ':不是图片');    }}//关键代码上传到服务器function uploadFile(file) {    var reader = new FileReader();    reader.readAsArrayBuffer(file);    reader.onload = function () {        var blob = new Blob([reader.result], { type: 'image/jpg' });        //提交到服务器        var fd = new FormData();        fd.append('file', blob);        var ext = file.name.substring(file.name.lastIndexOf('.'));        fd.append('extention', ext);        fd.append('isClip', -1);        var xhr = new XMLHttpRequest();        xhr.open('post', '../ashx/upload.ashx', true);        xhr.onreadystatechange = function () {            if (xhr.readyState == 4 && xhr.status == 200) {                var data = eval('(' + xhr.responseText + ')');                console.info(data);                if (data.success) {                    //上传成功                    var imgName = data.msg;                    alert(imgName);                } else {                    alert(data.msg);                }            }        }        //开始发送        xhr.send(fd);    }}//读取图片内容 为DataURLfunction readFile(file) {    var reader = new FileReader();    reader.readAsDataURL(file);    reader.onload = function (e) {        var result = reader.result;        $('.container blockquote').text(result);        $('#img1').attr('src', result)    }}

 后台关键代码处理同上。

读取文件二:

读取文件一:

转载地址:http://xhpjo.baihongyu.com/

你可能感兴趣的文章
Linux 第二天
查看>>
问卷设计入门
查看>>
NoDrives-显示与隐藏驱动器【盘符的显示与隐藏】
查看>>
Linux查看系统信息的一些命令及查看已安装软件包的命令(转)
查看>>
导航代码
查看>>
C++之匿名对象与析构函数的关系
查看>>
input子系统分析之三:驱动模块
查看>>
jquery 选择时间(小时)区间(四)
查看>>
jquery 选择时间(小时)区间(二)
查看>>
WebService的编写与调用
查看>>
(模板)字符串哈希
查看>>
input:focus
查看>>
java中String,int,Integer,char、double类型转换
查看>>
Hdoj 2544
查看>>
nginx转发端口路由器再转发
查看>>
Python自动化运维之5、内置函数
查看>>
4-15 OS(线程,用户态,内核态,页) 数据库(原子性,日志) JAVA(I/O)
查看>>
7.Deque的应用案例-回文检查
查看>>
ionic3中使用自定义配置
查看>>
嵌入式驱动开发之2440/2410---硬件看门狗,喂狗
查看>>