利用微信jssdk上传图片,并保存到本地

这篇博客介绍了如何利用微信JSSDK上传图片并将其保存到本地服务器的详细过程。首先,通过plupload.js的修改实现了图片上传到本地的代码,然后展示了如何在后端使用Laravel接收并存储上传的图片。接着,博主讲解了如何使用微信JSSDK选择图片并上传到微信服务器,再下载到本地。最后,提供了后端下载微信图片并保存到本地的代码实现。
摘要由CSDN通过智能技术生成

项目需求:

项目一开始使用第三方cdn,七牛服务器上传图片,但是因为项目设计到很多身份证,营业执照等照片的上传,怕上传到这些cdn上面,消息泄露,所以将上传到第三方,改为上传到本地,七牛上传在之前的文章中有提到过,这里就不细说了,那么,接下了,我给大家讲一下laravel上传图片到本地的代码实现吧。

首先你需要了解plupload.js的相关知识:

define(['jquery', 'plupload', 'utils', 'locale'], function ($, plupload, utils, Locale) {
    var sdk = {};
    var defaultSetting = {
        multi_selection: false,
        file_data_name: 'image',
        flash_swf_url: '/static/libs/plupload/Moxie.swf',
        auto_start: true,
        url: '/service/cdn/upload',
        headers: {
            'X-XSRF-TOKEN': $.cookie('XSRF-TOKEN')
        }
    };


    sdk.uploader = function (settings) {
        var options = {};


        plupload.extend(options, defaultSetting, settings);


        var backupFileUploadedHandler = options.init && options.init.FileUploaded;
        if (backupFileUploadedHandler) {
            options.init.FileUploaded = function () {};
        }


        var uploadedErrorHandler = options.init && options.init.Error;
        if (uploadedErrorHandler) {
            options.init.Error = function () {};
        }


        var uploader = new plupload.Uploader(options);


        // bind 'FilesAdded' event
        uploader.bind('FilesAdded', function (up, files) {
            var autoStart = up.getOption && up.getOption('auto_start');
            autoStart = autoStart || (up.settings && up.settings.auto_start);


            if (autoStart) {
                setTimeout(function (){
                    up.start();
                }, 0);
            }


            // Reposition Flash/Silverlight
            up.refresh();
        });


        // bind 'FileUploaded' event
        uploader.bind('FileUploaded', (function (fileUploadedHandler) {
            return function (up, file, info) {
                var response = $.parseJSON(info.response);
                if (response.status == 'SUCCESS') {
                    if (fileUploadedHandler) {
                        fileUploadedHandler(up, file, response.body);
                    }
                } else {
                    utils.showMessage(Locale.t('errors.upload_image_failed'));
                }
            };
        })(backupFileUploadedHandler));


        uploader.bind('Error', (function(uploadedErrorHandler) {
            return function(up, err) {
                var errTip = '';
                var file = err.file;
                if (file) {
                    switch (err.code) {
                        case plupload.FAILED:
                            errTip = Locale.t('errors.upload_image_failed');
                            break;
                        case plupload.FILE_SIZE_ERROR:
                            var max_file_size = up.getOption && up.getOption('max_file_size');
                            max_file_size = max_file_size || (up.settings && up.settings.max_file_size);
                            errTip = Locale.t('errors.img_size_error', {size: max_file_size});
                            break;
                        case plupload.FILE_EXTENSION_ERROR:
                            errTip = Locale.t('errors.img_type_error');
                            break;
                        default:
                            errTip = Locale.t('errors.upload_image_failed');
                            break;
                    }
                }
                uploadedErrorHandler(up, err, errTip);
            };
        })(uploadedErrorHandler));


        uploader.init();


        return uploader;
    };


    return sdk;
});

该js复写了plupload.js,在qiniu上传的js基础上进行的修改,

在自定义的js文件中使用uploader.js,

var providerLicenseUpload = Uploader.uploader({
            runtimes: 'html5,flash,html4',
            browse_button: 'provider-license-upload',
            max_file_size: '1mb',
            dragdrop: false,
            auto_start: true,
            filters: {
                mime_types: [
                    {
                        title : 'Image files',
                        extensions : 'jpg,jpeg,gif,png'
                    }
                ]
            },
         

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值