文件上传/上传图片预览

文件上传/上传图片预览

大家好,又见面了,我是全栈君。

文件上传

文件的点后面的后缀名和Flie.type的类型为一直,如果点后面的后缀名为空,那么type就是空的

 

图片上传实现了上传

html

<img  id="img1" src="" style="width:500px;" >
<div id="dropbox" style="border: 1px solid red;width: 200px; height: 200px" ></div>
<form action="test.php" method="post" >
    <input type="file" name="img" multiple="multiple" onchange="fileinfo(this.files)">
    <button type="submit">提交</button>
</form>

 

script

 var dropbox;

    dropbox = document.getElementById("dropbox");
    dropbox.addEventListener("dragenter", dragenter, false);
    dropbox.addEventListener("dragover", dragover, false);
    dropbox.addEventListener("drop", drop, false);
    function dragenter(e) {
        e.stopPropagation();
        e.preventDefault();
    }

    function dragover(e) {
        e.stopPropagation();
        e.preventDefault();
    }
    function fileinfo(files){
        console.log(files);
        var reader = new FileReader();
        reader.readAsDataURL(files[0]);
        console.log(files[0]);
        reader.onload=function(e){
//            console.log(e.target.result);
//                $("#text").append(e.target.result);
            $("#img1").attr("src",e.target.result);
        }
    }

    function drop(e) {
        e.stopPropagation();
        e.preventDefault();

        var dt = e.dataTransfer;
        var files = dt.files;

        fileinfo(files);
    }

核心知识点:

    1、Flie

   文件(File) 接口提供有关文件的信息,并允许网页中的 JavaScript 访问其内容。通常情况下, File 对象是来自用户在一个   <input> 元素上选择文件后返回的 FileList 对象,也可以是来自由拖放操作生成的 DataTransfer 对象。

 例如:

var filesObjs=$("input")[0].files;
/*
   files 是个文件列表,里面包含多个文件,如果只是读取一个,或者第一个应该是 files[0]. 以下以一个文件为例子。
   files 是个原生API 所以需要转换为原生DOM操作files

*/

var filesObj=$("input")[0].files[0];

console.log(filesObj)

输出为:
文件上传/上传图片预览

 

 

 

       

File 接口也继承了  Blob 接口的属性:

File.lastModified 只读

返回当前 File 对象所引用文件最后修改时间, 自 1970年1月1日0:00 以来的毫秒数。

File.lastModifiedDate 只读 

返回当前 File 对象所引用文件最后修改时间的 Date 对象。

File.name 只读

返回当前 File 对象所引用文件的名字。

File.size 只读

返回文件的大小。

File.webkitRelativePath 只读 

返回 File 相关的 path 或 URL。

File.type 只读

返回文件的MIME类型

 

类型 描述 典型示例
text 表明文件是普通文本,理论上是可读的语言 text/plaintext/htmltext/css, text/javascript
image 表明是某种图像。不包括视频,但是动态图(比如动态gif)也使用image类型 image/gifimage/pngimage/jpegimage/bmpimage/webp
audio 表明是某种音频文件 audio/midiaudio/mpeg, audio/webm, audio/ogg, audio/wav
video 表明是某种视频文件 video/webmvideo/ogg
application 表明是某种二进制数据

application/octet-streamapplication/pkcs12application/vnd.mspowerpointapplication/xhtml+xmlapplication/xml,  application/pdf,

application/json

 

   2、FileReader 

    FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。

    通过构造函数FileReader()返回一个新构造的FileReader。

var reader = new FileReader();

    其中 reader.readAsDataURL()可以读取文件URL

如上方给出的例子

 function fileinfo(files){
        var reader = new FileReader();
        reader.readAsDataURL(files[0]);//先读取
        reader.onload=function(e){//读取完毕了 取出result
            $("#img1").attr("src",e.target.result);
        }
    }

如果不知道 e.target.result 哪里来的,可以打印一下 e .

扩展

JavaScript-Load-Image  加载和转换图像文件的JavaScript库。 

可以读取简单的图片base64 信息

Exif.js

用于从图像文件读取EXIF元数据的 JavaScript库。

这个比较全 但是一些经过微信保存的图片,信息貌似读取不出来

 

 

转载于:https://my.oschina.net/swmhxhs/blog/1595649

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107802.html原文链接:https://javaforall.net

(0)
上一篇 2022年3月12日 下午7:00
下一篇 2022年3月12日 下午7:00


相关推荐

  • executorcompletionservice_connected stakeholder

    executorcompletionservice_connected stakeholder原文地址:https://blog.csdn.net/chenaini119/article/details/51849222线程池ExecutorService相信java开发都用到,这里做个简单笔记一Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新…

    2025年10月20日
    6
  • Python+opencv裁剪/截取图片的几种方式

    Python+opencv裁剪/截取图片的几种方式文章目录前言一、手动单张裁剪/截取二、根据图片的位置坐标进行裁剪/截取三、opencv获取边缘并根据boundingbox截取/裁剪目标四、用YOLO目标检测框裁剪并批量保存总结前言在计算机视觉任务中,如图像分类,图像数据集必不可少。自己采集的图片往往存在很多噪声或无用信息会影响模型训练。因此,需要对图片进行裁剪处理,以防止图片边缘无用信息对模型造成影响。本文介绍几种图片裁剪的方式,供大家参考。一、手动单张裁剪/截取selectROI:选择感兴趣区域,边界框框选x,y,w,hselectR

    2022年6月15日
    66
  • OpenClaw为何让Token消耗失控 指数级增长引发关注

    OpenClaw为何让Token消耗失控 指数级增长引发关注

    2026年3月14日
    2
  • idea全局查找关键字快捷键_hbuilder全局搜索

    idea全局查找关键字快捷键_hbuilder全局搜索简介在使用IDEA时,可以使用双击Shift的方式进行关键字的查找,这是个很好的功能。但IDEA也提供了对于字符串的查找,比如说查找代码中"192.168.1.100"的字符串,又该如何敲击呢。用法Edit-&gt;Find-&gt;FindinPath-&gt;输入感兴趣的内容即可快捷键Ctrl+Shift+F…

    2025年8月4日
    5
  • phpstorm安装+新建项目+phpstorm中文版

    phpstorm安装+新建项目+phpstorm中文版一 安装 phpstorm1 运行安装包 2 点击 next3 选择安装路径点击 next4 我的电脑系统是 windows64 位所以选择 64 bit5 点击 INSTALL 安装 6 安装成功后运行 phpstorm 选择 evaluateforf 然后点击 evaluate 二 新建项目 1 点击 newproject2 选择项目路径点击 create 创建项目三 中文 1 file gt settings2 plugins gt 搜索 chin

    2025年7月5日
    5
  • 【Code皮皮虾】带你盘点双亲委派机制【原理、优缺点】,以及如何打破它?[通俗易懂]

    文章目录????前言什么是双亲委派机制?双亲委派机制原理优点缺点打破双亲委派机制?前提知识:线程上下文类加载器双亲委派出现之前JDBC打破双亲委派机制Tomcat如何打破双亲委派机制?1.自定义类加载器2.使用线程上下文类加载器????福利????Java入门到就业学习路线规划????小白快速入门Python爬虫路线????前言Code皮皮虾一个沙雕而又有趣的憨憨少年,和大多数小伙伴们一样喜欢听歌、游戏,当然除此之外还有写作的兴趣,emm…,日子还很长,让我们一起加油努力叭???????

    2022年4月6日
    134

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号