上传腾讯云

前端

shangchuantupian(){
				let vm=this;
				uni.chooseImage({
				    count: 1, //默认9
				    sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
				    success: function (res) {
						console.log(res.tempFilePaths[0])
						
						uni.uploadFile({
						    url:'http://localhost:8080/qq/img',     // 后端api接口
						    filePath: res.tempFilePaths[0], // uni.chooseImage函数调用后获取的本地文件路劲
						    name:'files',     //后端通过'files'获取上传的文件对象
						    header:{"Content-Type": "multipart/form-data"},
						    success:(res2) => {  
						            console.log(res2.data)
						    }
						});
						
						
					
				    }
				});	

后端

package com.demo.index;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.Date;

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.region.Region;

/**
 * @Author: zml
 * @Description: 描述
 * @CreateDate: 2020/1/13
 * @UpdateDate: 2020/1/13
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
//@Controller
@RestController
@CrossOrigin(origins = "*")
@RequestMapping("/qq")
public class QQCOSTool {

    private static final String SECRET_ID = "";//id
    private static final String SECRET_KEY = "";//key
    private static final String BUCKET = "";//桶名
    private static final String REGION_NAME = "ap-beijing";

    private static COSClient cosClient;

    // 1 初始化用户身份信息(secretId, secretKey)。
    private QQCOSTool(){
        COSCredentials cred = new BasicCOSCredentials(SECRET_ID, SECRET_KEY);
        // 2 设置 bucket 的区域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
        // clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。
        Region region = new Region(REGION_NAME);
        ClientConfig clientConfig = new ClientConfig(region);
        // 3 生成 cos 客户端。
        cosClient = new COSClient(cred, clientConfig);
    }

    // 如果client为空则实例
    private static COSClient getInstance(){
        if (cosClient == null){
            new QQCOSTool();
        }
        return cosClient;
    }

    @PostMapping("img")
//    @ResponseBody 
    public String addGoods(@RequestParam(value = "files", required = false) MultipartFile files){
        try {
        	System.out.println(files);
            return uploadPictureByFile(files);
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }
    
    public static String uploadPictureByFile(MultipartFile files) throws Exception {

        // 指定要上传的文件
        File file = multipartFileToFile(files);

//        MultipartFile file;
        // 指定要上传到 COS 上对象键
        String key = file.getName();//+"MyFile/" ;
        // 存储空间
        PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET, key, file);
        COSClient cosClient = getInstance();
        cosClient.putObject(putObjectRequest);
        // 关闭客户端
        cosClient.shutdown();
        Date expiration = new Date(new Date().getTime() + 5 * 60 * 10000);
        URL oldurl = cosClient.generatePresignedUrl(BUCKET, key, expiration);
        // 获得链接后解析字符串并且返回
        // 先将url转换为字符串
        String url = oldurl.toString();
        // http://jobpic-1258185724.cos.ap-guangzhou.myqcloud.com/image/T.jpg?sign
        // 直接查找到第一个?的位置
        url = url.substring(0, url.indexOf("?"));
        // 开始解析字符串
        return url;
    }

    /**
     * MultipartFile 转 File
     *
     * @param file
     * @throws Exception
     */

	public static File multipartFileToFile(MultipartFile file) throws Exception {

        File toFile = null;
        if (file.getSize() <= 0) {//"".equals(file) || 
            file = null;
        } else {
            InputStream ins = null;
            ins = file.getInputStream();
            toFile = new File(file.getOriginalFilename());
            inputStreamToFile(ins, toFile);
            ins.close();
        }
        return toFile;
    }

    //获取流文件
    private static void inputStreamToFile(InputStream ins, File file) {
        try {
            OutputStream os = new FileOutputStream(file);
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            os.close();
            ins.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

依赖

<!-- 		腾讯云上传 -->
		<!-- https://mvnrepository.com/artifact/com.tencentcloudapi/tencentcloud-sdk-java -->
		<dependency>
		    <groupId>com.tencentcloudapi</groupId>
		    <artifactId>tencentcloud-sdk-java</artifactId>
		    <version>3.0.123</version>
		</dependency>
	    <dependency>
	        <groupId>com.qcloud</groupId>
	        <artifactId>cos_api</artifactId>
	        <version>5.2.4</version>
	    </dependency>
	    <dependency>
	        <groupId>com.qcloud</groupId>
	        <artifactId>qcloud-java-sdk</artifactId>
	        <version>2.0.1</version>
	    </dependency>
发布了46 篇原创文章 · 获赞 1 · 访问量 1128

猜你喜欢

转载自blog.csdn.net/qq_43840143/article/details/104014446