七牛云的文件上传与删除 基于springboot

七牛云的文件上传与删除 基于springboot
话不多说直接上代码:

maven依赖

 
  <!-- 七牛云 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.31</version>
        </dependency>
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>[7.2.0, 7.2.99]</version>
        </dependency>
<!--七牛云-->

controller层servlet

 @RestController
@RequestMapping("qny")
public class QnyServlet {
    @Autowired
    private QnyService qnyService;
    //删除文件
    @RequestMapping("deletemp")
    public  ResponseResult deletemap(String fileKey){
       return qnyService.delete(fileKey);
    }
    //上传文件
    @RequestMapping(value = "testUpload", method = RequestMethod.POST)
    @ResponseBody
    public ResponseResult uploadImage(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
        return qnyService.test(file);
    }
}

接口service

public interface QnyService {
    public ResponseResult test(MultipartFile file);
    public  ResponseResult  delete(String fileKey);
}

service接口的实现

@Service
public class QnyserviceImp implements QnyService{

    @Override
    public ResponseResult test(MultipartFile file) {
        ResponseResult responseResult=new ResponseResult();
        String res=Qnyutil.uploadFile(file,FileUtil.IMAGE_FILE_EXTD);
        responseResult.setMessage(res);
        return responseResult;
        }
    @Override
    public ResponseResult delete(String fileKey) {
       Integer res = Qnyutil.delete(fileKey);
        ResponseResult responseResult=new ResponseResult();
        responseResult.setCode(res);
        return responseResult;
    }
    }

判断文件类型的工具类

public class FileUtil {
    // 图片允许的后缀扩展名
    public static String[] IMAGE_FILE_EXTD = new String[] { "png", "bmp", "jpg", "jpeg","pdf","xlsx","xls" };
    public static String[] IMAGE_FILE_EXTD1 = new String[] { "png", "bmp", "jpg", "jpeg"};
    public static String[] IMAGE_FILE_EXTD2 = new String[] { "pdf"};
    public static String[] IMAGE_FILE_EXTD3 = new String[] { "xlsx","xls"};
    public static boolean isFileAllowed(String fileName) {
        for (String ext : IMAGE_FILE_EXTD) {
            if (ext.equals(fileName)) {
                return true;
            }
        }
        return false;
    }
    public static boolean isFileAllowed(String fileName,String[] file) {
        for (String ext : file) {
            if (ext.equals(fileName)) {
                return true;
            }
        }
        return false;
    }
}

上传到七牛云的工具类

@Component
public class Qnyutil {
   // 设置好账号的ACCESS_KEY和SECRET_KEY
    public  static String ACCESS_KEY = "#####写自己的access####";
    public  static String SECRET_KEY = "#####写自己的sec####";
    // 要上传的空间
    public  static String bucketname = "#####写自己的存储空间名字####";
    // 密钥配置
    public  static Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
    // 构造一个带指定Zone对象的配置类,不同的七云牛存储区域调用不同的zone
    public  static Configuration cfg = new Configuration(Zone.zone2());
    // ...其他参数参考类注释
    public  static UploadManager uploadManager = new UploadManager(cfg);
    // 测试域名,只有30天有效期
    private static String QINIU_IMAGE_DOMAIN = "http://qldlxgj0k.hn-bkt.clouddn.com/";
    // 简单上传,使用默认策略,只需要设置上传的空间名就可以了
    public static String getUpToken() {
        return auth.uploadToken(bucketname);
    }
    public  static String  uploadFile(MultipartFile file,String[] fileSuffix) {
        try {
            //判断文件是否为空
            if (file.isEmpty()) {
                return "文件不能为空";
            }
            //判断文件后缀名是否合法
            int dotPos = file.getOriginalFilename().lastIndexOf(".");
            if (dotPos < 0) {
                return "文件名不合法";
            }
            String fileExt = file.getOriginalFilename().substring(dotPos + 1).toLowerCase();
            // 判断是否是合法的文件后缀
            if (!FileUtil.isFileAllowed(fileExt, fileSuffix)) {
                return "上传文件类型错误";
            }
            String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + fileExt;
            // 调用put方法上传
            Response res = uploadManager.put(file.getBytes(), fileName, getUpToken());
            // 打印返回的信息
            if (res.isOK() && res.isJson()) {
                // 返回这张存储照片的地址
                return  String.valueOf(JSONObject.parseObject(res.bodyString()).get("key"));
            } else {

                return "上传失败";
            }
        }catch (Exception e){
           return "上传异常";
        }
    }
    public  static String  uploadFile(MultipartFile file) {
        try {
            //判断文件是否为空
            if (file.isEmpty()) {
                return "文件不能为空";
            }
            //判断文件后缀名是否合法
            int dotPos = file.getOriginalFilename().lastIndexOf(".");
            if (dotPos < 0) {
                return "文件名不合法";
            }
            String fileExt = file.getOriginalFilename().substring(dotPos + 1).toLowerCase();
            // 判断是否是合法的文件后缀
            if (!FileUtil.isFileAllowed(fileExt)) {
                return "上传文件类型错误";
            }
            String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + fileExt;
            // 调用put方法上传
            Response res = uploadManager.put(file.getBytes(), fileName, getUpToken());
            // 打印返回的信息
            if (res.isOK() && res.isJson()) {
                // 返回这张存储照片的地址
                return String.valueOf(JSONObject.parseObject(res.bodyString()).get("key"));
            } else {

                return "上传失败";
            }
        }catch (Exception e){
            return "上传异常";
        }
    }
    public static Integer  delete(String key){
        BucketManager bucketManager = new BucketManager(auth, cfg);
        try {
            bucketManager.delete("sybida", key);
            return 1;
        } catch (Exception ex) {
            return 0;
        }
    }
}

前端页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/sybida/layui/css/layui.css"  media="all">
    <link rel="stylesheet" href="/sybida/bs/bootstrap.min.css">
 </script>
</head>
<body>
        <form action="" method="post" enctype="multipart/form-data" id="ff">
            <input type="file" name="file" id="nfile"/>
            <input type="button" id="btn" value="上传">
        </form>
<span id="spinfo"></span>
</body>
<script src="/sybida/jquery/jquery-3.3.1.min.js"></script>
<script src="/sybida/layui/layui.js" charset="utf-8"></script>
<script src="/sybida/bs/bootstrap.min.js"></script>
<script type="text/javascript">

    $("#btn").click(function () {


        var formData = new FormData(document.getElementById('ff'));
        formData.append("file", $("#nfile")[0].files[0]);
        $.ajax({
            type: "post",
            url: url+"qny/testUpload",
            data: formData,
            cache: false,   // 不缓存
            processData: false,   // jQuery不要去处理发送的数据
            contentType: false,   // jQuery不要去设置Content-Type请求头
            success: function (data) {
               $("#spinfo").html(data.message)
            },
            error:function () {
                alert("上传出错");
            }
        });
    })


</script>

</html>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
实现Spring Boot整合七牛云上传文件,可以按照以下步骤进行: 1.引入七牛云Java SDK 在pom.xml中引入七牛云Java SDK: ```xml <dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>[7.2.0,)</version> </dependency> ``` 2.配置七牛云参数 在application.yml或application.properties中添加七牛云的参数: ```yml qiniu: accessKey: your_access_key secretKey: your_secret_key bucket: your_bucket_name domain: your_domain_name ``` 3.编写上传文件的代码 在需要上传文件的地方编写上传文件的代码,示例代码如下: ```java @Service public class QiniuService { @Autowired private QiniuConfig qiniuConfig; /** * 上传文件七牛云 * * @param file 文件对象 * @return 文件访问URL */ public String uploadFile(File file) throws QiniuException { // 构造一个带指定Zone对象的配置类 Configuration cfg = new Configuration(Zone.autoZone()); // ...其他参数参考类注释 UploadManager uploadManager = new UploadManager(cfg); // 生成上传凭证,然后准备上传 String accessKey = qiniuConfig.getAccessKey(); String secretKey = qiniuConfig.getSecretKey(); String bucket = qiniuConfig.getBucket(); // 如果是Windows情况下,格式是 D:\\qiniu\\test.png String localFilePath = file.getAbsolutePath(); // 默认不指定key的情况下,以文件内容的hash值作为文件名 String key = null; Auth auth = Auth.create(accessKey, secretKey); String upToken = auth.uploadToken(bucket); try { Response response = uploadManager.put(localFilePath, key, upToken); // 解析上传成功的结果 DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class); return qiniuConfig.getDomain() + "/" + putRet.key; } catch (QiniuException ex) { Response r = ex.response; System.err.println(r.toString()); try { System.err.println(r.bodyString()); } catch (QiniuException ex2) { // ignore } throw ex; } } } ``` 4.测试上传文件 在测试类中编写测试上传文件的代码,示例代码如下: ```java @RunWith(SpringRunner.class) @SpringBootTest public class QiniuServiceTest { @Autowired private QiniuService qiniuService; @Test public void testUploadFile() throws QiniuException { File file = new File("test.png"); String url = qiniuService.uploadFile(file); System.out.println(url); } } ``` 其中,test.png是要上传的文件名。运行测试类即可上传文件七牛云,并返回文件的访问URL。 以上就是Spring Boot整合七牛云上传文件的全部步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值