webUploader使用方法

官网
API

引入webuploader.css webuploader.min.js


DOM

<div id="uploaderAvatar" class="display_none">
    <!--用来存放文件信息-->
    <div id="Avatarthelist" class="uploader-list"></div>
    <div class="btns">
        <div id="Avatarpicker">选择文件</div>
    </div>
</div>


JS
// 上传企业头像的代码
var BASE_URL = 'http://localhost:3000';
var avatarUploader = WebUploader.create({
    swf: BASE_URL + '/webUploader/Uploader.swf',
    server: BASE_URL + '/company/uploadCompanyImg',
    pick: '#Avatarpicker',
    resize: false,
    formData: {},
    method: 'POST',
    chunked: true,
    extensions: 'gif,jpg,jpeg,bmp,png',
    mimeTypes: 'image/*',
    compress: {
        width: 180,
        height: 180,
        quality: 90,
        allowMagnify: false,
        crop: false,
        preserveHeaders: true,
        noCompressIfLarger: false,
        compressSize: 307200
    },
});
avatarUploader.on('startUpload', function () {
    layer.open();
});
avatarUploader.on('uploadFinished', function () {
    $('.uploadProgressBg').css({'width': '1%'});
});
avatarUploader.on('uploadSuccess', function (file, response) {
    console.log(response);
});
avatarUploader.on('uploadProgress', function (file, percentage) {
    var mypercentage = parseInt(percentage * 100);
});
avatarUploader.on('uploadError', function (file, reason) {
    console.log(reason);
});
avatarUploader.on('error', function (type) {
    layer.msg('文件大小超出限制,请控制在300KB以内');
});

WebUploader.create中常用的属性是  pick  formData 还有压缩大小的等等。

常用事件是 startUpload, uploadFinished, uploadProgress, uploadError, error

uploadProgress 就是实时进度


坑点:
1.无法通过代理来截取file表单,需要通过直接地获取
$('#Avatarpicker .webuploader-element-invisible').trigger('click’).on(‘change’, function() {});
2.它提交的是Form表单
$(‘#mybutton’).on(‘click’, function() {
avatarUploader.option('formData', {
    isBaseCode: 1,
    picName: oCompanyDetail.uploadPic.picName,
    dataUrl: oCompanyDetail.uploadPic.dataUrl
});
此处formData是除了图片外别的字段

在Express中,此处是Base64码处理方式,直接上传图片的话,在 files中可以获取
var form = new multiparty.Form();
form.parse(req, function (err, fields, files) {
    var isBaseCode = parseInt(fields.isBaseCode);
    if (isBaseCode) {
        var picName = fields.picName.toString();
        var dataUrl = fields.dataUrl.toString();
        var base64Data = dataUrl.replace(/^data:image\/png;base64,/,"");
        var f = new AV.File(picName, {
            base64: base64Data
        });
        try {
            f.save().then(function (fileObj) {
                res.send({
                    "code": 0,
                    "message": "上传成功",
                    "url": fileObj.url(),
                    "id": fileObj.id,
                });
            });
        } catch (err) {
            console.log('uploadFile - ' + err);
            res.status(502);
        }
    } else {
        if (req.busboy) {

        } else {
            console.log('uploadFile - busboy undefined.');
            res.status(502);
        }
    }
});   
3.上传图片时候,有图片文件的话, uploadProgress是有实时进度,而上传Base64没文件的话, uploadProgress中只有一次1(100%)这样的提示。做进度的时候,第二种只能通过视觉欺骗用户有进度条。

4.上传图片与文字时候,formData中不能存在id,name两个字段,否则会被默认字段覆盖。解决办法是自己改自己的代码。。。。

5.Avatarpicker这个div中的内容,是在组件初始化之后才创建的,不知道为何写不了事件代理。只能通过 $('#Avatarpicker .webuploader-element-invisible').trigger('click’).on(‘change’, function() {});   即 坑点1
WebUploader是一个基于HTML5的文件上传组件,它提供了多种上传方式和丰富的事件和回调函数。以下是一个使用WebUploader获取压缩包数据的示例代码: ``` var uploader = WebUploader.create({ auto: false, pick: '#file-picker', accept: { title: 'Zip files', extensions: 'zip' } }); uploader.on('fileQueued', function(file) { uploader.makeThumb(file, function(error, src) { if (error) { console.log('Error generating thumbnail: ' + error); } else { console.log('Thumbnail generated: ' + src); } }); uploader.md5File(file).then(function(md5) { console.log('MD5: ' + md5); }); uploader.readAsBinaryString(file); }); uploader.on('uploadStart', function(file) { console.log('Upload started: ' + file.name); }); uploader.on('uploadSuccess', function(file, response) { console.log('Upload succeeded: ' + file.name); }); uploader.on('uploadError', function(file, reason) { console.log('Upload failed: ' + file.name + ', reason: ' + reason); }); uploader.on('uploadComplete', function(file) { console.log('Upload completed: ' + file.name); }); ``` 在这个示例中,我们创建了一个WebUploader实例,并设置了自动上传为`false`,使用`#file-picker`元素作为选择文件的按钮,并只允许上传ZIP文件。当用户选择一个文件后,我们使用`makeThumb`方法生成该文件的缩略图,并使用`md5File`方法计算该文件的MD5值。然后,我们使用`readAsBinaryString`方法将该文件的数据以二进制字符串的形式读取出来。 在上传过程中,我们监听了多个事件,包括`uploadStart`、`uploadSuccess`、`uploadError`和`uploadComplete`。在这些事件中,我们可以处理上传过程中的各种情况。例如,在`uploadSuccess`事件中,我们可以获取到上传成功后服务器返回的响应数据。 在后端,你需要根据你的后端框架和需求来接收这个压缩包数据并进行处理。具体的实现方式取决于你的后端框架和需求。例如,在Java的Spring框架中,你可以使用`@RequestParam("file") MultipartFile file`注解来接收文件数据,然后使用Java的ZipInputStream类来解压缩这个文件数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值