精华内容
下载资源
问答
  • 主要介绍了JS实现的文件拖拽上传功能,涉及javascript事件触发、页面元素属性动态修改等相关操作技巧,需要的朋友可以参考下
  • .net版拖拽上传文件

    2019-01-15 22:10:05
    可以拖拽上传图片,基于别的程序自己改的,可以保存到数据库中
  • 文件上传(拖拽文件)

    万次阅读 2018-05-22 00:52:24
    本地上传,提前预览(图片,视频)1.html中div标签预览显示,button标签触发上传事件。...将图片拖拽到此</div> <button onclick="xhr2()">ajax上传</
    本地上传,提前预览(图片,视频)
    1.html中div标签预览显示,button标签触发上传事件。
    <div  id="drop_area" style="border:3px dashed silver;width:200px; height:200px">将图片拖拽到此</div>  
    <button οnclick="xhr2()">ajax上传</button>  
    
    2.禁止浏览器打开文件行为

    document.addEventListener("drop",function(e){  //拖离   
        e.preventDefault();      
    })  
    document.addEventListener("dragleave",function(e){  //拖后放   
        e.preventDefault();      
    })  
    document.addEventListener("dragenter",function(e){  //拖进  
        e.preventDefault();      
    })  
    document.addEventListener("dragover",function(e){  //拖来拖去    
        e.preventDefault();      
    })  
    3.拖拽,预览文件
    var box = document.getElementById('drop_area'); //拖拽区域     
    box.addEventListener("drop",function(e){           
        var fileList = e.dataTransfer.files; //获取文件对象    
        //检测是否是拖拽文件到页面的操作            
        if(fileList.length == 0){                
            return false;            
        }             
        //拖拉图片到浏览器,可以实现预览功能    
        //规定视频格式  
        Array.prototype.S=String.fromCharCode(2);  
        Array.prototype.in_array=function(e){  
            var r=new RegExp(this.S+e+this.S);  
            return (r.test(this.S+this.join(this.S)+this.S));  
        };  
        var video_type=["video/mp4","video/ogg"];  
          
        //创建一个url连接,供src属性引用  
        var fileurl = window.URL.createObjectURL(fileList[0]);                
        if(fileList[0].type.indexOf('image') === 0){  //如果是图片  
            var str="<img width='200px' height='200px' src='"+fileurl+"'>";  
            document.getElementById('drop_area').innerHTML=str;                   
        }else if(video_type.in_array(fileList[0].type)){   //如果是规定格式内的视频                    
            var str="<video width='200px' height='200px' controls='controls' src='"+fileurl+"'></video>";  
            document.getElementById('drop_area').innerHTML=str;        
        }else{ //其他格式,输出文件名  
            //alert("不预览");  
            var str="文件名字:"+fileList[0].name;  
            document.getElementById('drop_area').innerHTML=str;      
        }         
        resultfile = fileList[0];             
    },false);  
    4.ajax上传
    function xhr2(){  
        var xhr = new XMLHttpRequest();//第一步  
        //新建一个FormData对象  
        var formData = new FormData(); //++++++++++  
        //追加文件数据  
        formData.append('file', resultfile);  
        //post方式  
        xhr.open('POST', 'xhr2.php'); //第二步骤  
        //发送请求  
        xhr.send(formData);  //第三步骤  
        //ajax返回  
        xhr.onreadystatechange = function(){ //第四步  
        if ( xhr.readyState == 4 && xhr.status == 200 ) {  
          console.log( xhr.responseText );        
        }  
      };  
        //设置超时时间  
        xhr.timeout = 10000;  
        xhr.ontimeout = function(event){  
        alert('请求超时!');  
      }           
    }  
    5.php保存文件
    <?php  
        print_r($_FILES["file"]);  
        $name = $_FILES["file"]["name"]; //中文可能乱码使用iconv函数  
        move_uploaded_file($_FILES["file"]["tmp_name"],iconv("UTF-8","gb2312",$name));  
    ?> 
    PHP move_uploaded_file() 函数

    定义和用法
    move_uploaded_file() 函数将上传的文件移动到新位置。 若成功,则返回 true,否则返回 false。

    语法
    move_uploaded_file(file,newloc)
    参数
    描述
    file
    必需。规定要移动的文件。
    newloc
    必需。规定文件的新位置。
    说明
    本函数检查并确保由  file  指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由  newloc  指定的文件。
    如果  file  不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false。
    如果  file  是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告。
    这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。  


    
     




    展开全文
  • 本文给大家分享的是使用php结合js实现异步拖拽上传文件的代码,及示例,有需要的小伙伴可以参考下。
  • 主要介绍了Vue实现带进度条的文件拖动上传功能,本文通过实例代码给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
  • 拖拽上传文件

    2013-03-07 16:09:04
    目前采用拖拽上传得网站有:Gmail,网易邮箱,酷盘,还有一些国外的网站,用户只要拖拽文件到指定区域就可以轻松实现文件上传,技术难度为0,用户体验良好!
  • java实现拖拽文件上传,可以直接导入myeclipse运行。
  • zphupload.js 文件上传拖拽效果,以及图片,MP3,MP4格式的预览,ajax上传
  • js代码 ... 'submitButtonCopy':'上传选择的文件', 'furtherInstructionsCopy':'你可以选择或拖拽更多的文件', 'secondarySelectButtonCopy':'选择更多的文件', }); }()); [removed]
  • 使用HTML5拖拽文件到浏览器并实现文件上传下载,html5的功能是越来越强大了,下面与大家分享下具体的实现代码,感兴趣的朋友可以参考下哈
  • 本篇内容主要解决.net core中文件上传的问题 开发环境:ubuntu+vscode.本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
  • 通过 Qt Designer 设计的界面,填写相应内容,将文件拖入程序界面中图片位置,就可将文件进行重命名,同时可选择是否勾选备注,来确定是否将备注加入文件名。
  • 一个文件上传Vue2插件,可以拖动文件或在对话框中选择要上传的文件
  • 主要介绍了jQuery插件实现文件上传功能,可支持拖拽文件上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了HTML5 拖拽批量上传文件的示例代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Vue.js文件上传组件该组件只是一个按钮 多文件上传 上传目录 拖动上传 拖动目录 同时上传多个文件 html4(IE 9) PUT方法 自定义过滤器 缩图 块上传 例 安装 npm install vue-upload-component --save ...
  • 本篇文章主要介绍了基于AngularJS的拖拽上传的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了MVC文件上传支持批量上传拖拽及预览文件内容校验功能,需要的朋友可以参考下
  • ajax文件上传,支持拖拽上传。修改了补丁,支持后台上传成功的回调。 演示页面在dist文件夹下 index.html
  • 在用户拖拽文件到浏览器的某个元素上时,js可以监听到与拖拽相关的事件,并对拖拽结果进行处理,本文讨论下和拖拽文件相关的一些问题,不过没有处理太多关于兼容性的问题。 拖拽事件 js能够监听到拖拽的事件有drag...
  • js获取拖拽目录文件

    2018-06-06 21:34:37
    根据拖拽事件中获取文件列表,可用于实现文件上传,下载地址:dw.gofreeteam.com/DocSystem/web/project.html?vid=4&doc=2834
  • vue 文件拖拽上传

    2020-12-30 11:08:06
    return if (file.size > this.MAX_FILE_SIZE) { return alert('文件大小不能超过10M') } this.batchFile = file this.fileName = file.name // 清空,防止上传后再上传没有反应 e.target.value = '' }, // 拖拽上传 ...

    在这里插入图片描述

    <template>
      <div id="app">
        <div class="content">
          <div class="drag-area" @dragover="fileDragover" @drop="fileDrop">
            <div v-if="fileName" class="file-name">{{ fileName }}</div>
            <div v-else class="uploader-tips">
              <span>将文件拖拽至此,或</span>
              <label for="fileInput" style="color: #11A8FF; cursor: pointer">点此上传</label>
            </div>
          </div>
        </div>
     
        <div class="footer">
          <input type="file" id="fileInput" @change="chooseUploadFile" style="display: none;">
          <label for="fileInput" v-if="fileName" style="color: #11A8FF; cursor: pointer">选择文件</label>
     
          <button @click="uploadOk">提交</button>
        </div>
      </div>
    </template>
    
    <script>
    export default {
      data () {
        return {
          fileName: '',
          batchFile: '',
          MAX_FILE_SIZE: 10 * 1000 * 1000
        }
      },
      methods: {
        // 点击上传
        chooseUploadFile (e) {
          const file = e.target.files.item(0)
    
          if (!file) return
          if (file.size > this.MAX_FILE_SIZE) {
            return alert('文件大小不能超过10M')
          }
    
          this.batchFile = file
          this.fileName = file.name
    
          // 清空,防止上传后再上传没有反应
          e.target.value = ''
        },
        // 拖拽上传
        fileDragover (e) {
          e.preventDefault()
        },
        fileDrop (e) {
          e.preventDefault()
          const file = e.dataTransfer.files[0] // 获取到第一个上传的文件对象
          console.log(file)
          console.log('拖拽释放鼠标时')
    
          if (!file) return
          if (file.size > this.MAX_FILE_SIZE) {
            return alert('文件大小不能超过10M')
          }
    
          this.batchFile = file
          this.fileName = file.name
        },
        // 提交
        uploadOk () {
          if (this.batchFile === '') {
            return alert('请选择要上传的文件')
          }
    
          let data = new FormData()
          data.append('upfile', this.batchFile)
    
          // ajax
        }
      }
    
    }
    </script>
    
    <style lang="less" scoped>
        * {
          font-size: 14px;
        }
        .drag-area {
          height: 200px;
          width: 300px;
          border: dashed 1px gray;
          margin-bottom: 10px;
          color: #777;
        }
        .uploader-tips {
          text-align: center;
          height: 200px;
          line-height: 200px;
        }
        .file-name {
          text-align: center;
          height: 200px;
          line-height: 200px;
        }
    </style>
    
    展开全文
  • 引入vue静态js,实现vue附件点击上传拖拽上传
  • H5拖拽文件上传

    2020-03-31 15:36:46
    元素设置拖拽之后拖动的效果. 1.1 拖拽元素事件 ondragstar:拖拽前出发,事件只会触发一次. ondrag:拖拽前,拖拽结束之间触发,事件会连续触发, ondragend:拖拽结束触发,事件只触发一次. ...

    1.设置拖拽

    图片元素自带拖拽属性,其他元素可设置draggable属性.

    <div draggable="true"></div>

    元素设置拖拽之后可以看到拖动. 

    不设置拖拽时除了图片元素其他元素是不可拖拽的.

     

    1.1 拖拽元素事件

    1.  ondragstar:拖拽前出发,事件只会触发一次.
    2. ondrag:拖拽前,拖拽结束之间触发,事件会连续触发,
    3. ondragend:拖拽结束触发,事件只触发一次.
            let box = document.querySelector('.box')
            box.ondragstart = function (e) {
               console.log('拖拽开始')
            }
            box.ondrag = function (e) {
               console.log('拖拽ing.......')
            }
            box.ondragend = function (e) {
               console.log('拖拽结束')
            }

     打印的结果:

     1.2 目标元素拖拽事件

    1. ondragenter:进入目标元素触发
    2. ondragover:进入目标元素触发
    3. ondragleave:离开目标元素触发
    4. ondrop:在目标元素上释放鼠标
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .wrap {
                float: left;
                width: 300px;
                height: 400px;
                background-color: skyblue;
                font-size:20px;
                color:purple;
                text-align: center;
                line-height:400px;
            }
    
            .box {
                float: right;
                width: 150px;
                height: 150px;
                background-color: #ccc;
            }
        </style>
    </head>
    
    <body>
        <div class="box" draggable="true"></div>
        <!-- <img src="https://img9.doubanio.com/view/photo/l/public/p2492913246.webp" width="200"> -->
        <div class="wrap">把元素移入这里</div>
        <script>
            let wrap = document.querySelector('.wrap')
            let box = document.querySelector(".box");
            //被拖拽元素对象事件
             // dragstart 拖拽开始时触发,只触发一次
             box.ondragstart = function () {
                this.style.background = 'blue';
    
            }
    
            // drag拖拽触发的事件,连续触发,只要鼠标不松开会一直触发
            box.ondrag = function () {
                this.style.background = 'yellow';
            }
    
            // dragend 拖拽结束时,触发的事件,只要鼠标一松开就触发
            box.ondragend = function () {
                this.style.background = 'pink';
            }
    
    
            //拖拽元素被拖拽到的对象事件
            //进入目标元素触发
            wrap.ondragenter = function () {
                this.innerHTML = '元素进入了'
            }
            //离开目标元素触发
            wrap.ondragleave = function () {
                this.innerHTML = '讨厌,谁让你离开的'
            }
            //在目标元素中移动触发
            wrap.ondragover = function () {
                this.innerHTML = '元素移动了'
                return false;
            }
            //在目标元素上释放鼠标触发
            wrap.ondrop = function () {
                this.innerHTML = '鼠标松开了'
            }
        </script>
    </body>
    
    </html>

     

    1.2 dataTransfer对象

    dataTransfer 是拖拽事件对象的属性 .

    1.setData() : 设置数据 key和value(必须是字符串)

    2.getData() : 获取数据,根据key值,获取对应的value

            let box = document.querySelector(".box");
            let wrap = document.querySelector(".wrap");
            //datatransfer 拖拽对象的事件属性
            box.ondragstart = function (e) {
                this.style.background = 'pink';
                e.dataTransfer.setData('key', this.className);
                // 火狐必须加上这一行代码才能触发drag和dragend事件
            }
            wrap.ondragover = function () {
                console.log(1)
                return false
            }
            // 设置的key在这里可以使用
            wrap.ondrop = function (e) {
                this.style.background = 'skyblue';
                //获取box元素
                let key =document.querySelector("."+ e.dataTransfer.getData("key"));
                // console.log(key);
                //删除box
                document.body.removeChild(key);
            }

     元素移入之后就被删除了

    3.effectAllowed : 设置光标样式(none, copy, copyLink, copyMove, link, linkMove, move, all 和 uninitialized)

    box.ondragstart = function (e) {
        e.dataTransfer.effectAllowed = 'link';
    }

    4.files:获取外部拖拽的文件,返回一个filesList列表 filesList下有个type属性,返回文件的类型

    wrap.ondrop = function (e) {
        let a = e.dataTransfer;
        console.log(a.files)
        return false;
    }

    当我把文件拖入之后,打印的结果如下图(可以看到图片的大小,类型,最后修改时间等信息):

     2.读取文件信息

    通过FileReader对象可以读取本地存储的文件信息, 使用File对象 指定要读取的文件数据.

    2.1 FileReader读取文件信息(利用拖拽来读取文件信息)

    1. readAsDataURL 参数为要读取的文件对象

    2. onload当读取文件成功完成的时候触发此事件

    3. this. result 获取读取的文件数据

    示例代码如下:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
    
            .box {
                width: 800px;
                height: 100px;
                margin: 20px auto;
                border-radius: 5px;
                background-color: #ccc;
                font-size: 18px;
                font-weight: bold;
                color: #fff;
                text-align: center;
                line-height: 100px;
            }
    
            .container {
                width: 800px;
                height: 400px;
                margin: 20px auto;
                border: 2px solid skyblue;
            }
    
            .container>img {
                width: 200px;
            }
        </style>
    </head>
    
    <body>
        <div class="box">把图片拖至这里</div>
        <!-- 用来展示已经拖入的图片 -->
        <div class="container"></div>
    
        <script>
            //获取元素
            let box = document.querySelector('.box');
            let container = document.querySelector(".container");
    
            box.ondragover = function (ev) {
                //阻止默认事件
                ev.preventDefault();
                //阻止事件冒泡
                ev.stopPropagation();
                return false;
            }
    
            box.ondrop = function (ev) {
                ev.preventDefault()
                ev.stopPropagation()
                //获取文件信息
                console.log(ev.dataTransfer.files)
                let file = ev.dataTransfer.files[0];
    
                //创建读取文件的对象
                let oFiles = new FileReader();
                console.log(oFiles)
                //获取文件的URL地址
                oFiles.readAsDataURL(file);
                //文件信息读取完成之后会触发onload 事件
                oFiles.onload = function () {
                    let src = this.result;
                    // console.log(src);
                    if (file.type.includes('image')) {
                        //创建图片标签
                        let img = new Image();
                        //设置渲染图片的URL地址
                        img.src = src;
                        //将图片作为contianer的子元素渲染到页面中
                        container.appendChild(img);
                    }
                }
                return false;
            }
        </script>
    </body>
    
    </html>

    2.2 利用表单域读取文件信息

    表单域返回的DOM元素身上有一个files的属性,这个属性值就是一个Files对象, 里面保存选中的文件的信息

    选择文件之后出发onchange事件.

    一段代码:

             //表单域返回的DOM元素身上有一个files的属性,这个属性值就是一个Files对象, 里面保存选中的文件的信息 
            var file = document.querySelector('#file');
            file.onchange = function() {
                console.dir(this);
            }

    利用表单读取文件信息:

    <input type="file" name="file" multiple />
    
    <script>
        var file = document.querySelector("input")
    
        file.addEventListener("change",function(){
            console.log(this.files)
        },false)
    
    </script>

    案例

    html代码:

       <input type="file" id='file' multiple/>
        <div class="container"></div>

    JavaScript代码

           //获取元素
            let container = document.querySelector(".container");
            let file = document.querySelector('#file');
            file.onchange = function () {
                let files = this.files;
                let length = files.length;
                if(length){
                    for(let i = 0; i < length; i++){
                        Render(files[i])
                    }
                }
            }
            function Render(file) {
                //创建读取文件的对象
                let oFile = new FileReader();
    
                // 通过读取文件对象的readAsDataURL 方法读取指定的文件
                oFile.readAsDataURL(file);
    
                //文件信息读取完毕触发onload事件
                oFile.onload = function() {
                    let src = this.result;
                    //创建图片标签
                    let img = new Image();
                    img.src = src;
                    container.appendChild(img);
                }
            }

    最终实现的效果就是可以同时上传多个图片

     

    展开全文
  • js实现拖拽文件上传

    千次阅读 2020-01-07 08:37:38
    //拖拽文件刚到目标上 $$('#app-form').on('dragenter', function () { console.log("dragenter"); }); //拖拽在目标上,一直执行 $$('#app-form').on('dragover', function () { console.log("dragover"); $$('#...
    //拖拽文件刚到目标上
    $$('#app-form').on('dragenter', function () {
    console.log("dragenter");
    });
    
    //拖拽在目标上,一直执行
    $$('#app-form').on('dragover', function () {
    console.log("dragover");
    $$('#app-form').css("background","green");
    return false;
    });
    
    //拖拽时离开目标
    $$('#app-form').on("dragleave", function () {
    console.log("dragleave");
    $$('#app-form').css("background","none");
    });
    
    //拖拽到目标并释放
    $$('#app-form').on("drop", function (ev) {
    console.log("drop");
    $$('#app-form').css("background","none");
    var fs = ev.dataTransfer.files;
    uploadFile(fs);
    return false;
    });
    
    展开全文
  • Vue.js文件上传组件,多文件上传,上传目录,拖动上传,拖动目录,同时上传多个文件,html4(IE 9),`PUT`方法,自定义过滤器
  • bootstrap 的上传文件控件号称最好用的,总之我用着到是挺别扭的。 首先这个控件很简单。 html代码 <form> <input type="file" name="txt_file" id="txt_file" multiple class="file-loading" /> </...
  • java模拟资源管理器,实现文件图标化展示,实现文件的打开,删除,上传,下载等功能。html5实现文件拖拽上传,将文件通过拖拽到浏览器的方式上传到服务器。。。。。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,577
精华内容 20,630
关键字:

文件上传拖拽