你好,我用webuploader.html5only.min.js实现批量图片上传,我该怎么在action中获取上传的那些文件呢?

author author     2023-05-03     387

关键词:

参考技术A 1.1 分片、并发
分片与并发结合,将一个大文件分割成多块,并发上传,极大地提高大文件的上传速度。
当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件。另外分片传输能够更加实时的跟踪上传进度。
1.2 预览、压缩
支持常用图片格式jpg,jpeg,gif,bmp,png预览与压缩,节省网络数据传输。
解析jpeg中的meta信息,对于各种orientation做了正确的处理,同时压缩后上传保留图片的所有原始meta数据。
1.3 多途径添加文件
支持文件多选,类型过滤,拖拽(文件&文件夹),图片粘贴功能。
粘贴功能主要体现在当有图片数据在剪切板中时(截屏工具如QQ(Ctrl + ALT + A), 网页中右击图片点击复制),Ctrl + V便可添加此图片文件。
1.4 HTML5 & FLASH
兼容主流浏览器,接口一致,实现了两套运行时支持,用户无需关心内部用了什么内核。
同时Flash部分没有做任何UI相关的工作,方便不关心flash的用户扩展和自定义业务需求。
1.5 MD5秒传
当文件体积大、量比较多时,支持上传前做文件md5值验证,一致则可直接跳过。
如果服务端与前端统一修改算法,取段md5,可大大提升验证性能,耗时在20ms左右。
1.6 易扩展、可拆分
采用可拆分机制, 将各个功能独立成了小组件,可自由搭配。
采用AMD规范组织代码,清晰明了,方便高级玩家扩展。
2、引入资源
2.1 下载包内容

├── Uploader.swf // SWF文件,当使用Flash运行时需要引入。

├── webuploader.js // 完全版本。
├── webuploader.min.js // min版本

├── webuploader.flashonly.js // 只有Flash实现的版本。
├── webuploader.flashonly.min.js // min版本

├── webuploader.html5only.js // 只有Html5实现的版本。
├── webuploader.html5only.min.js // min版本

├── webuploader.withoutimage.js // 去除图片处理的版本,包括HTML5和FLASH.
└── webuploader.withoutimage.min.js // min版本

2.2 或者直接使用由staticfile提供的cdn版本,或者下载Git项目包。

// SWF文件,当使用Flash运行时需要引入。
├── http://cdn.staticfile.org/webuploader/0.1.0/Uploader.swf

// 完全版本。
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.js
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.min.js

// 只有Flash实现的版本。
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.flashonly.js
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.flashonly.min.js

// 只有Html5实现的版本。
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.html5only.js
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.html5only.min.js

// 去除图片处理的版本,包括HTML5和FLASH.
├── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.withoutimage.js
└── http://cdn.staticfile.org/webuploader/0.1.0/webuploader.withoutimage.min.js

2.3 DIY打包
WebUploader文件打包借助了Grunt工具来实现
2.3.1 环境依赖
1.git命令行工具
2.node & npm命令行工具
3.grunt (npm install grunt-cli -g)

2.3.2 编译代码
1.克隆 webuploader git仓库,git clone https://github.com/fex-team/webuploader.git。
2.安装node依赖,npm install。
3.执行grunt dist,此动作会在dist目录下面创建合并版本的js, 包括通过uglify压缩的min版本。

2.3.3 配置
打开webuploader仓库根目录下面的Gruntfile.js文件, 代码合并有buildtask来完成。找到build配置项。
Gruntfile.js已经配置了一个自定义合并的demo. 打包只支持HTML5的版本

// 自己配置的实例
// glob语法。
custom:
preset: "custom",
cwd: "src",
src: [
'widgets/**/*.js',
'runtime/html5/**/*.js' ],
dest: "dist/webuploader.custom.js"


3、angular指令——<web-uploader>
3.1 指令功能
添加一个上传文件按钮,可以自行配置上传文件的类型和过滤规则,且在弹出的模态框中进行操作,支持连续上传,分类选择上传
3.2 使用说明
这里只是使用说明,可能会加一些注意事项,具体参数或者变量说明请参看后面
3.2.1 页面添加一个指令
<web-uploader class="btn btn-info" type="image" accept="accept">uploader</web-uploader>

3.2.2 配置上传类型和过滤规则
上传类型
type有四种类型,分别为
image:图片
video:音视频
flash:flash
file:办公文档,压缩文件等等
过滤规则
accept有四个对象属性,属性中包含标题、允许文件后缀、允许的mimetype
3.2.3 指令中绑定弹出模态框的事件
web-uploader这个指令中其实只做了一件事,给元素本身绑定弹出模态框的事件,具体上传文件是在模态框中完成的
3.2.4 初始化uploader类,配置相关属性
在模态框控制器中用到了$timeout
$timeout(function()
//这里是上传配置代码
,0)

因为配置uploader时需要事先准备好dom元素,angular打开模态框是异步而JavaScript是单线程,所以实际上在执行模态框控制器中的代码时,模态框并没有打开,也就是dom并没有加载完成,这会导致WebUploader报a.runningtime is not a function...的错误
3.3 指令详细说明
3.3.1 父级controller中的配置

.controller('myCtrl',['$scope', '$modal', function($scope, $modal)
//配置允许上传的类型 图片/音视频/flash/文件
$scope.accept =
//图片
image:
title : 'Images',//标题
extensions : 'gif,jpg,jpeg,bmp,png,ico',//允许上传文件的后缀
mimeTypes : 'image/*'//允许的mimetype
,
//音视频
video:
title : 'Videos',
extensions : 'wmv,asf,asx,rm,rmvb,ram,avi,mpg,dat,mp4,mpeg,divx,m4v,mov,qt,flv,f4v,mp3,wav,aac,m4a,wma,ra,3gp,3g2,dv,vob,mkv,ts',
mimeTypes : 'video/*,audio/*'
,
//flash
flash:
title : 'Flashs',
extensions : 'swf,fla',
mimeTypes : 'application/x-shockwave-flash'
,
//办公文档,压缩文件等等
file:
title : 'Files',
extensions : 'zip,rar,ppt,pptx,doc,docx,xls,xlsx,pdf',
mimeTypes : 'application/zip,application/x-rar-compressed,application/vnd.ms-powerpoint,application/vnd.openxmlformats- officedocument.presentationml.presentation,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms- excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/pdf'

;

])

3.3.2 指令web-uploader

.directive('webUploader', ['$modal', function($modal)
return
restrict: 'AE',
scope:
accept: '=accept'
,
link: function($scope, $element, $attr)

$element.bind('click',function()
var modalInstance = $modal.open(
controller: 'modalCtrl',
templateUrl: 'template/webuploader.tpl.html',
size:'lg',
resolve:
items: function()
return
accept: $scope.accept,
type: $attr.type
;


);
modalInstance.result.then(function(returnStatus)
console.log(returnStatus);
,function()
console.log('Modal dismissed at: ' + new Date());
);
);

;
]);本回答被提问者采纳

你好我用arcgis裁剪了tm影像之后保存为tif格式但是在envi中打开后范围线里面的区域都是黑色的求解

参考技术A在arcgis中输出影像中,将nodata设置为0就行 参考技术B试着用ERDAS裁切呢, 查看详情

你好,我用java写的webservice,参数是string类型,但是我们的对接伙伴,直接传入字符串,我这接收到null

可以指导一下吗?谢谢!你先看看他们到底是怎么调用你写的方法的,调用的方法有没有写对,参数类型、个数对不对。大多数情况都是调用者没有正确调用,或者是他们传过来的参数内容本身就是空的导致的。参考技术A还没... 查看详情

你好。我用的有道云笔记。电脑端登陆后无法完成同步。换账号后就可以。

之前用的126的邮箱,登陆后点击同步会提示同步完成。但是在网页端和手机端都看不到。并且点击使用量按钮的时候会提示获取用户数据失败。试过在网页端新建笔记同步正常。看到论坛有人遇见过这种情况,就换了一个账号163... 查看详情

你好,我用python输出自己定义的一个变量时总是出现“illegalargumenttypeforbuilt-inoperation”

这是我的代码#!/user/bin/python#-*-coding:UTF-8-*-fromodbAccessimport*odb=openOdb(path='s-dhfs-0222-1.odb')lastFrame=odb.steps['Step-2'].frames[-1]instancey=odb.rootAssembly.instances['YAOZHU']strains=lastFrame.fieldOutputs['E']yzstrains=strains.getSubset(region=... 查看详情

PHP字符串替换匹配整个单词

...ewtext=str_replace("Hello",\'NEW\',$text);新文本应该是这样的新的你好,你好,你好PHP返回新你好1你好,新z谢谢。【问 查看详情

为啥我用ultraiso制作u盘写入那么慢

你好,1、这个写入,与电脑的处理能力是有关系的,也就是和电脑的配置有关系,配置高,就会快一些。2、另外,也与U盘的写入速度有一定的关系,如果可能也可以用3.0的U盘速度会快一些。参考技术A因为你的U盘接口是USB2.0的... 查看详情

你好thinkphp,为啥源码在顶部始终有一段空白怎么解决的?

我用工具查询代码并没有bom编码每个页面上都会自带一段空白参考技术A在“ThinkPHP验证码问题解决方法汇总”提到过,没想到代码空行还会导致网页源码头的空行,看来代码空行出现的问题还真多,不知以后还会惹出来什么麻烦... 查看详情

你好,我用webuploader.html5only.min.js实现批量图片上传,我该怎么在action中获取上传的那些文件呢?

参考技术A1.1分片、并发分片与并发结合,将一个大文件分割成多块,并发上传,极大地提高大文件的上传速度。当网络问题导致传输错误时,只需要重传出错分片,而不是整个文件。另外分片传输能够更加实时的跟踪上传进度... 查看详情

#你好unity3d#project脚本执行双击资源操作

Unity的Project里面放了很多游戏资源,比如脚本或者图片。正常情况下我们可以通过鼠标双击来进行打开。假如我现在不想主动双击打开,我想自动打开某个脚本或者图片再或者别的资源怎么办?如下代码所示,两种方法都OK。这... 查看详情

test

你好你好你好你好你好你好你好你好你好你好 你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好... 查看详情

你好世界!

你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!你好世界!... 查看详情

css怎么让第二行内容显示不下的时候自动省略号!

css怎么让第二行内容显示不下的时候自动省略号!原:你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,你好,需要效果... 查看详情

vblistbox如何换行?

...text1设置了Text1.MultiLine=Truetext1.ScrollBars=2,第一行显示为你好吗第二行为我很好但在listbox中显示就为你好吗我很好我希望能像text1那样显示求高人指点!程序中:List1.AddItem"你好吗"List1.AddItem"我很好"或者在设计阶段... 查看详情

python能用中文编写程序吗?

...uot;)代码二:>>>importrasygui>>>easygui.msgbox("你好吗?")python支持中文编码如果是python3.x,只用将源文件编码改成utf8就可以了,如果是python2.x需要将源文件编码改成utf8,同时在文件之前声明编码格式,像这样:#co... 查看详情

为啥我用jquery写cookie总是undefined

...什么的。<br>google下jquerycookie使用也很多。 参考技术C你好:存值$.cookie("the_cookie","the_value");取值varthemebg=$.cookie("the_cookie");如果要了解更多建议网上找一下资料。 查看详情

为啥我用jquery写cookie总是undefined

...资料:http://blog.csdn.net/oldtown/article/details/5154485参考技术A你好:存值$.cookie("the_cookie","the_value");取值varthemebg=$.cookie("the_cookie");如果要了解更多建议网上找一下资料。 参考技术B存值$.cookie("the_cookie",&qu 查看详情

python打印“你好世界”与“你好世界”

】python打印“你好世界”与“你好世界”【英文标题】:Leftout\'print\'functioninPython,e.g.(print"helloworld")vs("helloworld")【发布时间】:2021-11-1919:51:29【问题描述】:>>>print"helloworld"helloworld>>>"helloworld"\'he 查看详情

#世界,你好!(代码片段)

print(‘世界,你好!‘)  查看详情