zoukankan      html  css  js  c++  java
  • java上传图片到七牛云

    如有需要可以加我Q群【308742428】大家一起讨论技术,有偿提供技术支持。

    后面会不定时为大家更新文章,敬请期待。

    话不多说直接上代码:

    前端这里我是使用的layui的插件,样式还是可以需要引入两个文件:

    一个css样式文件,一个js文件

    <link rel="stylesheet" href="${ctxStatic}/layui/css/layui.css"  media="all">
    <script src="${ctxStatic}/layui/layui.js" charset="utf-8"></script>
    

    html页面样式:

     html代码:

    <div class="row">
    	<div class="col-xs-12">
    		<div class="form-group">
    			<label class="control-label col-sm-2">${text('图片')}:</label>
    			<div class="col-sm-10">
    				<div class="layui-upload">
    					<button type="button" class="layui-btn" id="btn_imgs"><i class="layui-icon">�</i>上传图片</button>
    					<button type="button" class="layui-btn layui-btn-normal" οnclick="resetimg()" >清空图片</button>
    				<div class="layui-upload-list">
    					<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
    					    <div class="layui-upload-list" id="img_imgs"></div>
    					</blockquote>
    					<p id="imgsText"></p>
    					<input type="hidden" id="img" name="img" value="${zrCircle.img}">
    				</div>
    				</div>
    			</div>
    		</div>
    	</div>
    </div>
    

    javascript代码:

    //清空图片
    function resetimg(){
    	$('#img_imgs').empty();
    	$("#img").val("");
    }
     
    layui.use('upload', function(){
    	var $ = layui.jquery
    			,upload = layui.upload;
     
    	//多图片上传 如何只需要上传单张图片multiple,number两个参数去掉即可
    	upload.render({
    		elem: '#btn_imgs'
    		,accept: 'images'
    		,acceptMime: 'image/*'
    		,exts: 'jpg|png|jpeg|bmp'
    		,url: '' //改成您自己的上传接口
    		,multiple: true
    		,number:5
    		,before: function(obj){
    			//预读本地文件示例,不支持ie8
    			obj.preview(function(index, file, result){
    				$('#img_imgs').append('<img src="'+ result +'" alt="'+ file.name +'" style="margin-left:10px;" class="layui-upload-img" width="200px" height="160px">')
    			});
    		}
    		,done: function(res){
    			if(res.code ==500){
    				return layer.msg('上传失败');
    			}else{
    				//上传成功
    				var ss=$("#img").val();
    				if (ss.length>4){
    					ss=ss+","+res.url;
    				}else{
    					ss=res.url;
    				}
    				$("#img").val(ss);
    				//点击放大
    				renderImg();
    			}
    		}
    		,error: function(){
    			//演示失败状态,并实现重传
    			var demoText = $('#imgsText');
    			demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
    			demoText.find('.demo-reload').on('click', function(){
    				uploadInst.upload();
    			});
    		}
    	});
     
    });
    

    后台java代码:

    /**
    	 * 上传图片
    	 * @param file
    	 * @return
    	 */
    	@PostMapping(value = "upload")
    	@ResponseBody
    	public  Map<String,Object> upload(MultipartFile file)  {
    		String fileName=null;
    		Map<String,Object> map=new HashMap<>();
    		try {
    			File f = File.createTempFile("tmp", null);
    			//通过MultipartFile的transferTo(File dest)这个方法来转存文件到指定的路径。MultipartFile转存后,无法再操作,会报错
    			file.transferTo(f);
    			fileName = QiniuCloudUtil.upload(f);
    			fileName="http://qiniu.zenran.com/"+fileName;
    			System.out.println(fileName);
    			//在JVM进程退出的时候删除文件,通常用在临时文件的删除.
    			f.deleteOnExit();
    			map.put("code",200);
    			map.put("url",fileName);
    		} catch (IOException e) {
    			map.put("code",500);
    			map.put("url",fileName);
    			e.printStackTrace();
    		}
    		return map;
    	}
    
    QiniuCloudUtil工具类:

    需要注意使用七牛云需要下载依赖包:

    <dependency>
                <groupId>com.qiniu</groupId>
                <artifactId>qiniu-java-sdk</artifactId>
                <version>7.2.28</version>
            </dependency>
    
     
    import com.qiniu.common.QiniuException;
    import com.qiniu.common.Zone;
    import com.qiniu.http.Response;
    import com.qiniu.storage.Configuration;
    import com.qiniu.storage.UploadManager;
    import com.qiniu.util.Auth;
    import org.apache.commons.lang3.StringUtils;
     
    import java.io.File;
    import java.io.IOException;
    import java.util.UUID;
     
    /**
     * @author dsn
     * @createTime 07 21:07
     * @description 七牛云工具
     */
    public class QiniuCloudUtil {
     
        // 设置需要操作的账号的AK和SK
        private static final String ACCESS_KEY = "";
        private static final String SECRET_KEY = "";
        // 要上传的空间名
        private static final String bucketname = "";
        private static final String domain = "";       //外链域名
        // 密钥
        private static final Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
     
    //    //上传
        public static String upload(File file) throws IOException {
            // 创建上传对象,Zone*代表地区
            Configuration configuration = new Configuration(Zone.zone2());
            UploadManager uploadManager = new UploadManager(configuration);
            try {
                // 调用put方法上传
                String token = auth.uploadToken(bucketname);
                if(StringUtils.isEmpty(token)) {
                    System.out.println("未获取到token,请重试!");
                    return null;
                }
                String imageName = UUID.randomUUID().toString();
                System.out.println("File name = "+imageName);
                Response res = uploadManager.put(file,imageName,token);
                // 打印返回的信息
                if (res.isOK()){
                    return imageName;
                }
            }catch (QiniuException e) {
                Response r = e.response;
                // 请求失败时打印的异常的信息
                e.printStackTrace();
                System.out.println("error "+r.toString());
                try {
                    // 响应的文本信息
                    System.out.println(r.bodyString());
                } catch (QiniuException e1) {
                    System.out.println("error "+e1.error());
                }
            }
            return null;
        }
    }
    

      

      

      

      

      

      

  • 相关阅读:
    Jenkins修改用户密码及权限
    Selenium知识点小结
    解析图形验证码登录系统
    Pywinauto实现电脑客户端有道云签到领空间
    Python冒泡排序
    LoadRunner12常用函数
    GIT教程笔记
    LoadRunner 关联
    搭建自动化测试框架Python3+Selenium
    SSH免密从A服务器登录进B服务器,重启B服务器的tomcat
  • 原文地址:https://www.cnblogs.com/dsn727455218/p/12874465.html
Copyright © 2011-2022 走看看