webuploader上传成功后怎么删除

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webuploader上传成功后怎么删除相关的知识,希望对你有一定的参考价值。

<div id="uploader">
<div class="queueList">
<div id="dndArea" class="placeholder">
<div id="filePicker"></div>
<p>或将照片拖到这里,单次最多可选30张</p>
</div>
</div>
<div class="statusBar" style="display:none;">
<div class="progress">
<span class="text">0%</span>
<span class="percentage"></span>
</div><div class="info"></div>
<div class="btns">
<div id="filePicker2"></div><div class="uploadBtn">开始上传</div>
</div>
</div>
</div>

<script>
require([\'jquery\', \'webuploader\' ], function($, WebUploader)
return;
// 当domReady的时候开始初始化
$(function()
var $wrap = $(\'#uploader\'),

// 图片容器
$queue = $( \'<ul class="filelist"></ul>\' )
.appendTo( $wrap.find( \'.queueList\' ) ),

// 状态栏,包括进度和控制按钮
$statusBar = $wrap.find( \'.statusBar\' ),

// 文件总体选择信息。
$info = $statusBar.find( \'.info\' ),

// 上传按钮
$upload = $wrap.find( \'.uploadBtn\' ),

// 没选择文件之前的内容。
$placeHolder = $wrap.find( \'.placeholder\' ),

$progress = $statusBar.find( \'.progress\' ).hide(),

// 添加的文件数量
fileCount = 0,

// 添加的文件总大小
fileSize = 0,

// 优化retina, 在retina下这个值是2
ratio = window.devicePixelRatio || 1,

// 缩略图大小
thumbnailWidth = 110 * ratio,
thumbnailHeight = 110 * ratio,

// 可能有pedding, ready, uploading, confirm, done.
state = \'pedding\',

// 所有文件的进度信息,key为file id
percentages = ,

supportTransition = (function()
var s = document.createElement(\'p\').style,
r = \'transition\' in s ||
\'WebkitTransition\' in s ||
\'MozTransition\' in s ||
\'msTransition\' in s ||
\'OTransition\' in s;
s = null;
return r;
)(),

// WebUploader实例
uploader;

// 实例化
uploader = WebUploader.create(
pick:
id: \'#filePicker\',
label: \'点击选择图片\'
,
dnd: \'#dndArea\',
paste: \'#uploader\',
// swf文件路径
swf: \'$_W[\'siteroot\']app/resource/componets/webuploader/Uploader.swf\',
// 文件接收服务端。
server: \'$_W[\'siteroot\']app/php echo str_replace(\'./\',\'\',url(\'utility/file\',array(\'do\'=>\'upload\', \'type\'=>\'image\'), true))\',
chunked: true,
// runtimeOrder: \'flash\',
// sendAsBinary: true,
fileNumLimit: 30,
fileSizeLimit: 30 * 1024 * 1024, // 30 M
fileSingleSizeLimit: 4 * 1024 * 1024 // 1 M
);

// 添加“添加文件”的按钮,
uploader.addButton(
id: \'#filePicker2\',
label: \'继续添加\'
);

// 当有文件添加进来时执行,负责view的创建
function addFile( file )
var $li = $( \'<li id="\' + file.id + \'">\' +
\'<p class="title">\' + file.name + \'</p>\' +
\'<p class="imgWrap"></p>\'+
\'<p class="progress"><span></span></p>\' +
\'</li>\' ),
$btns = $(\'<div class="file-panel">\' +
\'<span class="cancel">删除</span>\' +
\'<span class="rotateRight">向右旋转</span>\' +
\'<span class="rotateLeft">向左旋转</span></div>\').appendTo( $li ),
$prgress = $li.find(\'p.progress span\'),
$wrap = $li.find( \'p.imgWrap\' ),
$info = $(\'<p class="error"></p>\'),

showError = function( code )
switch( code )
case \'exceed_size\':
text = \'文件大小超出\';
break;

case \'interrupt\':
text = \'上传暂停\';
break;

default:
text = \'上传失败,请重试\';
break;


$info.text( text ).appendTo( $li );
;

if ( file.getStatus() === \'invalid\' )
showError( file.statusText );
else
// @todo lazyload
$wrap.text( \'预览中\' );
uploader.makeThumb( file, function( error, src )
if ( error )
$wrap.text( \'不能预览\' );
return;


var img = $(\'<img src="\'+src+\'">\');
$wrap.empty().append( img );
, thumbnailWidth, thumbnailHeight );

percentages[ file.id ] = [ file.size, 0 ];
file.rotation = 0;


file.on(\'statuschange\', function( cur, prev )
if ( prev === \'progress\' )
$prgress.hide().width(0);
else if ( prev === \'queued\' )
$li.off( \'mouseenter mouseleave\' );
$btns.remove();

// 成功
if ( cur === \'error\' || cur === \'invalid\' )
console.log( file.statusText );
showError( file.statusText );
percentages[ file.id ][ 1 ] = 1;
else if ( cur === \'interrupt\' )
showError( \'interrupt\' );
else if ( cur === \'queued\' )
percentages[ file.id ][ 1 ] = 0;
else if ( cur === \'progress\' )
$info.remove();
$prgress.css(\'display\', \'block\');
else if ( cur === \'complete\' )
$li.append( \'<span class="success"></span>\' );

$li.removeClass( \'state-\' + prev ).addClass( \'state-\' + cur );
);

$li.on( \'mouseenter\', function()
$btns.stop().animate(height: 30);
);

$li.on( \'mouseleave\', function()
$btns.stop().animate(height: 0);
);

$btns.on( \'click\', \'span\', function()
var index = $(this).index(),
deg;

switch ( index )
case 0:
uploader.removeFile( file );
return;

case 1:
file.rotation += 90;
break;

case 2:
file.rotation -= 90;
break;


if ( supportTransition )
deg = \'rotate(\' + file.rotation + \'deg)\';
$wrap.css(
\'-webkit-transform\': deg,
\'-mos-transform\': deg,
\'-o-transform\': deg,
\'transform\': deg
);
else
$wrap.css( \'filter\', \'progid:DXImageTransform.Microsoft.BasicImage(rotation=\'+ (~~((file.rotation/90)%4 + 4)%4) +\')\');

);
$li.appendTo( $queue );


// 负责view的销毁
function removeFile( file )
var $li = $(\'#\'+file.id);
delete percentages[ file.id ];
updateTotalProgress();
$li.off().find(\'.file-panel\').off().end().remove();


function updateTotalProgress()
var loaded = 0,
total = 0,
spans = $progress.children(),
percent;

$.each( percentages, function( k, v )
total += v[ 0 ];
loaded += v[ 0 ] * v[ 1 ];
);

percent = total ? loaded / total : 0;

spans.eq( 0 ).text( Math.round( percent * 100 ) + \'%\' );
spans.eq( 1 ).css( \'width\', Math.round( percent * 100 ) + \'%\' );
updateStatus();


function updateStatus()
var text = \'\', stats;

if ( state === \'ready\' )
text = \'选中\' + fileCount + \'张图片,共\' + WebUploader.formatSize( fileSize ) + \'。\';
else if ( state === \'confirm\' )
stats = uploader.getStats();
if ( stats.uploadFailNum )
text = \'已成功上传\' + stats.successNum+ \'张照片至XX相册,\'+
stats.uploadFailNum + \'张照片上传失败,<a class="retry" href="#">重新上传</a>失败图片或<a class="ignore" href="#">忽略</a>\'

else
stats = uploader.getStats();
text = \'共\' + fileCount + \'张(\' +
WebUploader.formatSize( fileSize ) +
\'),已上传\' + stats.successNum + \'张\';

if ( stats.uploadFailNum )
text += \',失败\' + stats.uploadFailNum + \'张\';



$info.html( text );


function setState( val )
var file, stats;

if ( val === state )
return;


$upload.removeClass( \'state-\' + state );
$upload.addClass( \'state-\' + val );
state = val;

switch ( state )
case \'pedding\':
$placeHolder.removeClass( \'element-invisible\' );
$queue.hide();
$statusBar.addClass( \'element-invisible\' );
uploader.refresh();
break;

case \'ready\':
$placeHolder.addClass( \'element-invisible\' );
$( \'#filePicker2\' ).removeClass( \'element-invisible\');
$queue.show();
$statusBar.removeClass(\'element-invisible\');
uploader.refresh();
break;
case \'uploading\':
$( \'#filePicker2\' ).addClass( \'element-invisible\' );
$progress.show();
$upload.text( \'暂停上传\' );
break;
case \'paused\':
$progress.show();
$upload.text( \'继续上传\' );
break;
case \'confirm\':
$progress.hide();
$upload.text( \'开始上传\' ).addClass( \'disabled\' );
stats = uploader.getStats();
if ( stats.successNum && !stats.uploadFailNum )
setState( \'finish\' );
return;

break;
case \'finish\':
stats = uploader.getStats();
if ( stats.successNum )
alert( \'上传成功\' );
else
// 没有成功的图片,重设
state = \'done\';
location.reload();

break;

updateStatus();


uploader.onUploadProgress = function( file, percentage )
var $li = $(\'#\'+file.id),
$percent = $li.find(\'.progress span\');

$percent.css( \'width\', percentage * 100 + \'%\' );
percentages[ file.id ][ 1 ] = percentage;
updateTotalProgress();
;

uploader.onFileQueued = function( file )
fileCount++;
fileSize += file.size;

if ( fileCount === 1 )
$placeHolder.addClass( \'element-invisible\' );
$statusBar.show();


addFile( file );
setState( \'ready\' );
updateTotalProgress();
;

uploader.onFileDequeued = function( file )
fileCount--;
fileSize -= file.size;

if ( !fileCount )
setState( \'pedding\' );


removeFile( file );
updateTotalProgress();
;

uploader.on( \'all\', function( type )
var stats;
switch( type )
case \'uploadFinished\':
setState( \'confirm\' );
break;
case \'startUpload\':
setState( \'uploading\' );
break;
case \'stopUpload\':
setState( \'paused\' );
break;

);

uploader.onError = function( code )
alert( \'Eroor: \' + code );
;

$upload.on(\'click\', function()
if ( $(this).hasClass( \'disabled\' ) )
return false;

if ( state === \'ready\' )
uploader.upload();
else if ( state === \'paused\' )
uploader.upload();
else if ( state === \'uploading\' )
uploader.stop();

);

$info.on( \'click\', \'.retry\', function()
uploader.retry();
);

$info.on( \'click\', \'.ignore\', function()
alert( \'todo\' );
);

$upload.addClass( \'state-\' + state );
updateTotalProgress();
);
);
</script>
参考技术A

webuploader上传成功后可以通过输入删除程序进行删除。

具体操作方法:

1、打开webuploader。

2、“点击选择图片”选择要删除的已上传图片。

3、输入程序:

//移除资源

$remove = isset($param['remove']) ? $param['remove'] : array(); // 获取移除数据

unset($param['remove']);

$tools = new \\org\\Tools;

$result = $tools->del_file('../public/uploads/images/', $remove);

$param['photo'] = isset($param['photo']) ? implode(',', $param['photo']) : ''; //获取插入数据

4、点击“确定”即可。

参考技术B 前台删除用的方法
uploader.removeFile(file);//从队列中移除
如果使用uploader..getFiles().length来判断上传的数量的话,可以清空队列

uploader.reset();//重置队列

uplodify上传成功后,删除文件

uplodify控件用于web上传很方便,上传之前,添加到了队列中,若需要删除,官网手册提供了onCancel事件。但是,如果在BS的公告系统中,往往要求实现像邮箱中上传一样,自动上传。若用户需要删除刚刚上传的文件,怎么把最终的文件信息存数据库中呢?

解决办法:

1、首先,在onUploadSuccess事件中记下上传的文件信息

 1   onUploadSuccess: function (file, data, response) {
 2 
 3                 data = jQuery.parseJSON(data);
 4 
 5                 me.fileData[file.name] = {
 6                     fileId: file.id,
 7                     fileName: file.name,
 8                     fileSize: file.size,
 9                     fileType: file.type,
10                     fileLink: data.msg.url,
11                 };
12                 me.value = escape(jQuery.toJSON(me.fileData));
13 }

2、为删除<a>标签添加click事件:

 1         $("#fileQueue .cancel").live(‘click‘, function () {
 2             var fileId = this.parentElement.parentElement.id;
 4             jQuery.each(Fileupload.fileData, function (name, element)
 5             {
 6                 if (element.fileId == fileId)
 7                 {
 8                     delete Fileupload.fileData[name];
 9                     return;
10                 }
11             });
12 });

通过遍历fileData然后找到其中id匹配的,然后删除其中的信息;

3、当用户保存公告时候,只需要ajax请求上传FileData中的信息到数据库中即可;

以上是关于webuploader上传成功后怎么删除的主要内容,如果未能解决你的问题,请参考以下文章

WebUploader暂停后再开始上传怎么没有反应?

webuploader中设置了fileNumLimit:5

WebUploader怎么获取上传前文件的本地绝对路径?

vuewebupload怎么添加请求头部内容

上传控件 WebUploader 判断有没有上传成功

webuploader怎么只能上传一个文件