使用ivx实现拖拽上传文件功能的经验总结

在实际案例中经常会使用到上传文件的功能,不过普通的上传文件需要用户再去一层一层查找文件的路径并不是十分的方便,今天给大家讲一种使用拖拽放置容器实现上传文件的方法。

1.拖拽放置容器
拖拽放置容器位于拓展组件中的特殊功能容器类,我们可以给它添加事件拖拽放置,此事件的动作中我们能获取一个返回值——拖拽文件,在调试记录中打印出来可以看到里面包含文件的名称、大小和类型等信息。



不过拖拽放置容器只是把文件拖拽进来,上传到服务器还是要使用文件接口组件。文件接口上传文件动作的回调中会收到文件上传到服务器后的一些信息参数。


2.添加数据库字段
第一步我们要做的是设计后台的数据库字段,我们添加以下4个字段,name,type,size和url,分别用于存储上传文件的名称,类型,大小和URL地址。

3.添加服务
下一步我们添加一个对数据库进行提交操作的服务。数据库有四个字段,所以服务添加了对应的四个接收参数,另外还有一个返回参数用于给前台返回数据库提交操作的结果。前台调用服务时返回结果是OK则提交成功,否者显示失败原因。

4.拖拽上传
在前台我们用一个对象数组存储我们上传了哪些文件,对象数组与数据库包含一样的4列,name,type,size和url。拖拽放置容器内,我们添加一些文本组件和图片组件对用户提示和展示上传进度。

然后是拖拽容器的事件,我们将文件拖拽放置到容器区域内时,调用文件接口组件上传文件,路径就是拖拽放置容器返回的参数“拖拽文件”,第一个回调uploaded,是文件已经上传完毕,这时我们给对象数组“上传的文件列表”添加一行数据,并且调用服务把这行数据也写入到数据库中,最后在服务的回调里查看数据库提交的结果。

文件接口上传文件的另外两个回调,onError表示上传出错,这里我们提示用户并把失败原因展示出来,uploading表示文件正在上传中,我们提示用户文件正在上传并展示上传进度。

5.前台文件列表
在前台我们还需要一个列表把上传过的文件展示出来,使用for容器循环创建一个列表,数据来源就是之前添加的对象数组“上传的文件列表”。

文件列表的每行中,文本组件绑定了当前数据的name,展示文件名称,圆框关闭图标添加了事件,用于从前台的对象数组中删除该行数据,下载图标添加了事件可以通过该行数据的url下载该文件(下载文件也需要使用文件接口组件)。



总结
需要注意的是拖拽放置容器只是将文件拖拽到了容器内部,具体上传到服务器还是要通过文件接口组件的,他只是提供了一种操作模式。另外在细节上,我们可以在拖拽进入事件下改变容器的背景颜色,然后拖拽离开时再将背景颜色重置为初始状态。这样用户将文件拖进容器区域内会有一个明显的展示效果的变化,用户体验也会更好一些。

原文地址:https://blog.51cto.com/14556317/2483550

时间: 2024-10-12 08:49:31

使用ivx实现拖拽上传文件功能的经验总结的相关文章

原生API实现拖拽上传文件实践

功能: 拖拽上传文件.图片,上传的进度条,能够同时上传多个文件. 完整的demo地址:https://github.com/qcer/FE-Components/tree/master/QDrag 涉及到的API: 1.HTML5的拖拽事件:dragenter,dragover,drop等 2.XMLHttpRequest  Level2 3.FormData 4.(扩展:HTML5的File API) 概述: 1.利用拖拽实践的API将一个普通的div自定义成一个放置目标,这里有一个技巧是放置

windows客户端开发--使你的输入框具有拖拽上传的功能

今天谈一天windows客户端拖拽上传功能. 其实主要是拖拽功能,上传是自己实现的. DragAcceptFiles 函数 最重要的就是这个函数了,看看作用: Registers whether a window accepts dropped files 原型: VOID DragAcceptFiles( HWND hWnd, BOOL fAccept ); 参数: hWnd Type: HWND The identifier of the window that is registering

Java实现拖拽上传

原文:http://www.open-open.com/code/view/1437358795584 在项目开发中由于实际需求,需要开发拖拽上传的功能,ok! 先看效果图: jsp上传前端代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html>

Nodejs express、html5实现拖拽上传

Nodejs express.html5实现拖拽上传 一.前言 文件上传是一个比较常见的功能,传统的选择方式的上传比较麻烦,需要先点击上传按钮,然后再找到文件的路径,然后上传.给用户体验带来很大问题.html5开始支持拖拽上传的需要的api.nodejs也是一个最近越来越流行的技术,这也是自己第一次接触nodejs,在nodejs开发中,最常用的开发框架之一是expess,它是一个类似mvc模式的框架.结合html5.nodejs express实现了拖拽上传的功能. 二.基础知识普及 1.No

Nodejs express、html5实现拖拽上传(转载)

一.前言 文件上传是一 个比较常见的功能,传统的选择方式的上传比较麻烦,需要先点击上传按钮,然后再找到文件的路径,然后上传.给用户体验带来很大问题.html5开始支持拖 拽上传的需要的api.nodejs也是一个最近越来越流行的技术,这也是自己第一次接触nodejs,在nodejs开发中,最常用的开发框架之一是 expess,它是一个类似mvc模式的框架.结合html5.nodejs express实现了拖拽上传的功能. 二.基础知识普及 1.NodeJs基础知识 nodejs简单来说就是一个可

基于AngularJS的拖拽上传

随着HTML5的普及,现在大部分浏览器都支持拖拽功能,今天我们要说的就是实现一套拖拽上传的功能(Angularjs+nodejs). 一.首先前端这款插件是基于AngularJS的,下面我们来看主要代码. 引入js: <script src="js/angular.1.3.15.min.js"></script> <script src="js/ng-file-upload-shim.min.js"></script>

jQuery插件之路(三)——文件上传(支持拖拽上传)

好了,这次咱一改往日的作风,就不多说废话了,哈哈.先贴上源代码地址,点击获取.然后直接进入主题啦,当然,如果你觉得我有哪里写的不对或者欠妥的地方,欢迎留言指出.在附上一些代码之前,我们还是先来了解下,上传文件的时候需要利用的一些必要的知识. 首先我们要说的就是FileReader对象,这是一个HTML5提出的,专门用来异步的读取用户计算机上文件的对象,这里有详细的介绍.所以如果我们想要使用它,那么首先我们得先创建一个FileReader对象. var fr = new FileReader()

Dropzone.js实现文件拖拽上传

dropzone.js是一个开源的JavaScript库,提供 AJAX 异步文件上传功能,支持拖拽文件.支持最大文件大小.支持设置文件类型.支持预览上传结果,不依赖jQuery库. 查看演示 下载源码 使用Dropzone 我们可以建立一个正式的上传form表单,并且给表单一个.dropzone的class. <form id="mydropzone" action="/upload.php" class="dropzone">&l

[开源应用]利用HTML5+resumableJs拖拽上传大文件

前言: 大文件传输一直是技术上的一大难点.文件过大时,一些性提交所有的内容进内存是不现实的.大文件带来问题还有是否支持断点传输和多文件同时传输. 本文以resumableJs为例,介绍了如何在ASP.NET中实现大文件传输.同时本文利用了Html5的新特性:支持拖拽. 本文的主要技术点在于:如何接收resumableJs的传送内容(官网不太清楚)和如何合并文件,难度并不高. 注:原博客中,此文章为原站点个人代码备份所用,注释不多,如有不懂,请在评论中给出. 效果: ASPX File: <htm