1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > JavaScript进阶(八)JS实现图片预览并导入服务器功能

JavaScript进阶(八)JS实现图片预览并导入服务器功能

时间:2019-04-10 11:50:16

相关推荐

JavaScript进阶(八)JS实现图片预览并导入服务器功能

web前端|js教程

JavaScript进阶,图片预览,导入服务器

web前端-js教程

网站 整站源码,vscode工作负载选什么,ubuntu vbox融合,tomcat运行哪个模式,苹果坏了爬虫,php 字符串转10进制,不属于seo优点的是,网站弹出提示特效代码,国内旅游网站模板lzw

JS实现导入文件功能

项目开发过程中,需要实现文件上传功能。借此机会学习之。

android demo 源码,vscode个性化背景图片,ubuntu页面缩放,tomcat+花生壳,智能抓取爬虫,php入口文件怎么写,胶南网站建设制作SEO优化排名lzw

使用HTML中现有的input type “file”可以支持这一功能。如下所示:

澳门社区网站源码,vscode扩展安装位置,ubuntu系统命令,tomcat配置主页路径,sqlite在应用中的作用,跳着走长得像蚕的爬虫是什么,php数组排列组合,企业为什么开展seo,汽车团购网站模板,dz魔王模板lzw

浏览时只显示指定文件类型

accept属性列表

1.accept=”application/msexcel”

2.accept=”application/msword”

3.accept=”application/pdf”

4.accept=”application/poscript”

5.accept=”application/rtf”

6.accept=”application/x-zip-compressed”

7.accept=”audio/basic”

8.accept=”audio/x-aiff”

9.accept=”audio/x-mpeg”

10.accept=”audio/x-pn/realaudio”

11.accept=”audio/x-waw”

12.accept=”image/gif”

13.accept=”image/jpeg”

14.accept=”image/tiff”

15.accept=”image/x-ms-bmp”

16.accept=”image/x-photo-cd”

17.accept=”image/x-png”

18.accept=”image/x-portablebitmap”

19.accept=”image/x-portable-greymap”

20.accept=”image/x-portable-pixmap”

21.accept=”image/x-rgb”

22.accept=”text/html”

23.accept=”text/plain”

24.accept=”video/quicktime”

25.accept=”video/x-mpeg2″

26.accept=”video/x-msvideo”

下面的问题是:如何获得文件的上传路径,然后才能进行文件的读写后续操作。

下面是一个图片上传、预览的Demo:

Image preview examplevar loadImageFile = (function () { if (window.FileReader) { var oPreviewImg = null, oFReader = new window.FileReader(), rFilter = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)$/i; oFReader.onload = function (oFREvent) { if (!oPreviewImg) { var newPreview = document.getElementById("imagePreview"); oPreviewImg = new Image(); oPreviewImg.style.width = (newPreview.offsetWidth).toString() + "px"; oPreviewImg.style.height = (newPreview.offsetHeight).toString() + "px"; newPreview.appendChild(oPreviewImg); } oPreviewImg.src = oFREvent.target.result; arr = oPreviewImg.src.toString().split(",");alert(arr[0]);alert(arr[1]);}; return function () { var aFiles = document.getElementById("imageInput").files; if (aFiles.length === 0) { return; } if (!rFilter.test(aFiles[0].type)) { alert("You must select a valid image file!"); return; } oFReader.readAsDataURL(aFiles[0]); } } if (navigator.appName === "Microsoft Internet Explorer") { return function () { alert(document.getElementById("imageInput").value); document.getElementById("imagePreview").filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = document.getElementById("imageInput").value; } } })(); #imagePreview { width: 160px; height: 120px; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale); }

测试

通过测试,可得到文件的格式、编码方式及编码内容,如下所示:

领悟

通过阅读代码,可以获取到图片的格式与编码方式了。接下来就是文件的传输了。

经历了两天的屈辱、不甘、痛苦挣扎,自己最终还是顽强的站了起来。

晚上回到宿舍继续挣扎,慢慢思路得以理清:在获取到图片的Base64编码格式之后,自己就联想到了之前写过的文件传输代码了,当然之前写的都是一些基本的文件操作。由此,自己联想,在这使用最原始的文件传输方法应该也可以实现。

早晨到实验室,自己先尝试将图片的Base64编码传输至服务端,在服务端接收到客户端传输来的Base64编码后,采用Base64Img工具包(点击下载工具包)将Base64图片编码转换为图片格式,并保存至指定位置。初次尝试,将图片文件保存至本地是没有问题的。经过更改一些细微的细节问题,将程序部署在阿里云服务器上,经过测试,SUCCESS!

核心代码

html

<!-- 选择文件 -->

javaScript

arr = oPreviewImg.src.toString().split(",");document.getElementById("img").innerHTML = arr[1];document.getElementById("imgName").innerHTML = document.getElementById("imageInput").files[0].name;//alert(document.getElementById("img").innerHTML);//alert(document.getElementById("imageInput").files[0].name);// 获取 图片名称(PS:瞬间感觉自己好聪明啊~~)//alert(arr[0]);// 获取图片格式与编码方式//alert(arr[1]);// 获取图片Base 64编码字节

程序截图

客户端顶部显示广告信息:

服务端广告管理界面:

服务端修改广告信息界面:

结语

至此,自己的文件上传操作终于完成了,一路坎坷,一路心酸。

自己也曾尝试过使用ng插件ng-file-upload(见参考文献1),但最终还是以失败而告终,真心没有搞明白代码,仿照源代码写就是没有效果,而且布局也不对,自己也是汗颜了。

自己接下来要突破的问题就是分页了,对于刚接触到的知识,往往不明觉厉。

相关文章:

用HTML5轻松实现图片预览

详解html5图片上传支持图片预览压缩及进度显示兼容IE6及标准浏览器

javascript实现图片预览和上传(兼容IE)代码分享

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。