React中上传图片到qiniu
在React中使用qiniu上传图片,实现方式有很多种,一种是在web端实现上传,一种是在server端实现上传
这里我说下我是如何在web端实现上传图片到七牛的
七牛的官方已经有了javascript的使用说明我这里就不重复了。
使用React首先是要把qiniu提供的js引入,由于我这里是使用的webpack,所以我就直接放在了引入文件中,
这样我就可以全局引用了。
require('./qiniu.js');
在组件中把qiniu的对象引入进来
const Qiniu = require('qiniu');
然后在componentDidMount这个方法中去初始化
//七牛上传大图 let uploader = Qiniu.uploader({ runtimes: 'html5,flash,html4', browse_button: 'pickfiles', uptoken : this.props.uptoken, domain: 'http://7u2r0u.com2.z0.glb.qiniucdn.com/',//这里换成自己的 container: 'app-background-container', max_file_size: '100mb', flash_swf_url: 'https://cdn.bootcss.com/plupload/2.1.7/Moxie.swf', max_retries: 3, dragdrop: true, drop_element: 'app-background-container', chunk_size: '4mb', auto_start: true, init: { 'FilesAdded': function(up, files) { console.log('上传 FilesAdded'); plupload.each(files, function(file) { // 文件添加进队列后,处理相关的事情 console.log(file); }); }, 'BeforeUpload': function(up, file) { // 每个文件上传前,处理相关的事情 console.log('上传 Before Upload'); console.log(up); console.log(file); $('#app-background-container .showpick').hide(); $('#big_url').val(''); }, 'UploadProgress': function(up, file) { console.log('上传 UploadProgress'); console.log(up); console.log(file); }, 'FileUploaded': function(up, file, info) { console.log('====上传完成===='); let domain = up.getOption('domain'); let res = JSON.parse(info); let sourceLink = domain + res.key; console.log(sourceLink); $('#app-background-container .showpick').attr('href',sourceLink); $('#app-background-container .showpick img').attr('src',sourceLink); $('#big_url').val(sourceLink); $('#app-background-container .showpick').show(); }, 'Error': function(up, err, errTip) { //上传出错时,处理相关的事情 console.log('====上传失败===='); console.log(err); console.log(errTip); }, 'UploadComplete': function() { console.log('====上传完毕===='); } } });
在render中需要把
<a className="btn btn-default btn-primary" id="pickfiles" href="#"> <i className="glyphicon glyphicon-plus"> </i> <span>上传背景大图</span> </a>
放进去,一定要注意id的值
千万别忘记了plupload这个插件,自己去google下就可以找到的,因为我把这个plupload做为一个externals,
所以在webpack的config中加入了
externals:{ 'moment': true, 'jquery':'jQuery', 'plupload':true,//重点在这里 'format':true, 'bootstrap':true, 'fancybox':true, 'co':true, '_':'lodash', 'async':true, 'datetimepicker':true, 'selectpicker':true, 'sweetalert':true, 'highcharts':'Highcharts', 'director':'Router' },
好了大概的思路就是这些了,不清楚的可以群里交流
版权声明
由 durban创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 博客( https://www.gowhich.com ),版权所有,侵权必究。
本文永久链接: https://www.gowhich.com/blog/726
版权声明
由 durban创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 Gowhich博客( https://www.gowhich.com ),版权所有,侵权必究。
本文永久链接: https://www.gowhich.com/blog/726