package com.loveanimals.loveanimals.controller.admin;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectResult;
import io.swagger.annotations.Api;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
/**
* @program:
* @description:
* @author: Mr.Pang
* @create: 2021/6/20 21:23
**/
@Api(value = "/tool/oss", description = "图片上传到阿里云OSS")
@Controller
@CrossOrigin
@RequestMapping("/tool/oss")
public class OSSClientUtilController {
Log log = LogFactory.getLog(OSSClientUtilController.class);
//阿里云OSS地址,这里看根据你的oss选择
protected static String endpoint = "http://oss-cn-beijing.aliyuncs.com";
//阿里云OSS账号
protected static String accessKeyId = "LTAI4G1xDMg6Y6ZBYV5oxYBf";
//阿里云OSS密钥
protected static String accessKeySecret = "H2kXQeClTEw0mdVyyJ1cGk7UJMeQpv";
//阿里云OSS上的存储块bucket名字
protected static String bucketName = "pang-mall";
//阿里云图片文件存储目录
private String homeimagedir = "homephoto/";
private OSSClient ossClient;
public OSSClientUtilController() {
ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
}
/**
* 初始化
*/
public void init() {
ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
}
/**
* 销毁
*/
public void destory() {
ossClient.shutdown();
}
/**
* 图片 上传阿里云oss
*
* @param file
* @return
*/
public String uploadHomeImageOSS(MultipartFile file) throws Exception {
if (file.getSize() > 1024 * 1024 * 10) {
throw new Exception("上传图片大小不能超过10M!");
}
String originalFilename = file.getOriginalFilename();
String substring = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();
Random random = new Random();
String name = random.nextInt(10000) + System.currentTimeMillis() + substring;
try {
InputStream inputStream = file.getInputStream();
this.uploadHomeImageFileOSS(inputStream, name);
return name;
} catch (Exception e) {
throw new Exception("图片上传失败");
}
}
/**
* 获得图片路径
*
* @param fileUrl
* @return
*/
public String getHomeImageUrl(String fileUrl) {
if (!StringUtils.isEmpty(fileUrl)) {
String[] split = fileUrl.split("/");
return this.getUrl(this.homeimagedir + split[split.length - 1]);
}
return null;
}
/**
* 图片上传到OSS服务器 如果同名文件会覆盖服务器上的
*
* @param instream 文件流
* @param fileName 文件名称 包括后缀名
* @return 出错返回"" ,唯一MD5数字签名
*/
public String uploadHomeImageFileOSS(InputStream instream, String fileName) {
String ret = "";
try {
//创建上传Object的Metadata
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentLength(instream.available());
objectMetadata.setCacheControl("no-cache");
objectMetadata.setHeader("Pragma", "no-cache");
objectMetadata.setContentType(getcontentType(fileName.substring(fileName.lastIndexOf("."))));
objectMetadata.setContentDisposition("inline;filename=" + fileName);
//上传文件
PutObjectResult putResult = ossClient.putObject(bucketName, homeimagedir + fileName, instream, objectMetadata);
ret = putResult.getETag();
} catch (IOException e) {
log.error(e.getMessage(), e);
} finally {
try {
if (instream != null) {
instream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return ret;
}
/**
* 判断OSS服务文件上传时文件的类型contentType
*
* @param FilenameExtension 文件后缀
* @return String
*/
public static String getcontentType(String FilenameExtension) {
if (FilenameExtension.equalsIgnoreCase(".bmp")) {
return "image/bmp";
}
if (FilenameExtension.equalsIgnoreCase(".gif")) {
return "image/gif";
}
if (FilenameExtension.equalsIgnoreCase(".jpeg") ||
FilenameExtension.equalsIgnoreCase(".jpg") ||
FilenameExtension.equalsIgnoreCase(".png")) {
return "image/jpeg";
}
if (FilenameExtension.equalsIgnoreCase(".html")) {
return "text/html";
}
if (FilenameExtension.equalsIgnoreCase(".txt")) {
return "text/plain";
}
if (FilenameExtension.equalsIgnoreCase(".vsd")) {
return "application/vnd.visio";
}
if (FilenameExtension.equalsIgnoreCase(".pptx") ||
FilenameExtension.equalsIgnoreCase(".ppt")) {
return "application/vnd.ms-powerpoint";
}
if (FilenameExtension.equalsIgnoreCase(".docx") ||
FilenameExtension.equalsIgnoreCase(".doc")) {
return "application/msword";
}
if (FilenameExtension.equalsIgnoreCase(".xml")) {
return "text/xml";
}
return "image/jpg";
}
/**
* 获得url链接
*
* @param key
* @return
*/
public String getUrl(String key) {
// 设置URL过期时间为10年 3600l* 1000*24*365*10
Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
// 生成URL
URL url = ossClient.generatePresignedUrl(bucketName, key, expiration);
if (url != null) {
return url.toString();
}
return null;
}
/**
* 判断图片
*
* @param file
* @return
* @throws Exception
*/
public String updateHomeImage(MultipartFile file) throws Exception {
OSSClientUtilController ossClient = new OSSClientUtilController();
if (file == null || file.getSize() <= 0) {
throw new Exception("图片不能为空");
}
String name = ossClient.uploadHomeImageOSS(file);
String imgUrl = ossClient.getHomeImageUrl(name);
return imgUrl;
}
//处理文件上传
@RequestMapping(value = "/homeImageUpload", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> homeImageUpload(MultipartFile file) {
Map<String, Object> value = new HashMap<String, Object>();
value.put("success", true);
value.put("errorCode", 0);
value.put("errorMsg", "");
try {
String head = updateHomeImage(file);//此处是调用上传服务接口
value.put("data", head);
} catch (IOException e) {
e.printStackTrace();
value.put("success", false);
value.put("errorCode", 200);
value.put("errorMsg", "图片上传失败");
} catch (Exception e) {
e.printStackTrace();
}
return value;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于Java、Vue、JavaScript、CSS和HTML的动物救助平台设计源码
共446个文件
xml:149个
java:128个
vue:30个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 40 浏览量
2024-10-09
07:19:24
上传
评论
收藏 20.3MB ZIP 举报
温馨提示
本项目是一款集成了Java、Vue、JavaScript、CSS和HTML技术的综合性动物救助平台源码,总文件量达446个,其中包括149个XML配置文件、128个Java源代码文件、30个Vue组件文件、27个JavaScript脚本文件、23个PNG图片文件、13个JPG图片文件、9个CSS样式表文件、9个GIF动画文件、4个VIM配置文件、4个JSON数据文件。该平台旨在为动物救助工作提供高效、便捷的解决方案。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java、Vue、JavaScript、CSS和HTML的动物救助平台设计源码 (446个子文件)
.browserslistrc 30B
CHANGES 296KB
nginx.conf 3KB
fastcgi.conf 1KB
bootstrap.min.css 149KB
layui.css 93KB
layui.css 88KB
layer.css 17KB
layui.mobile.css 10KB
laydate.css 7KB
login.css 3KB
index.css 3KB
code.css 1KB
.env.development 138B
iconfont.eot 46KB
nginx.exe 3.54MB
fastcgi_params 1007B
loading-0.gif 6KB
foot02.gif 3KB
foot03.gif 3KB
loading.gif 2KB
foot01.gif 2KB
foot04.gif 2KB
loading-2.gif 2KB
loading-upload.gif 2KB
loading-1.gif 701B
.gitignore 288B
.gitignore 246B
index.html 19KB
login.html 3KB
index.html 613B
favicon.ico 4KB
loveanimals.iml 15KB
loveanimals-adminfront.iml 336B
OSSClientUtilController.java 8KB
BuserController.java 8KB
BuserController.java 8KB
AuserController.java 7KB
AuserController.java 7KB
MessageboardController.java 6KB
AnimalsController.java 6KB
VolunteerController.java 6KB
AnimalsController.java 5KB
AnimalsVideoController.java 5KB
AdoptController.java 5KB
NoticeController.java 5KB
VolunteerController.java 5KB
DonatepeopleController.java 5KB
AliPayConfig.java 5KB
AliPayConfig.java 5KB
DonatepeopleController.java 4KB
PrivateletterController.java 4KB
PrivateletterController.java 4KB
NoticeController.java 4KB
Adopt.java 4KB
Adopt.java 4KB
AdoptController.java 4KB
MessageboardController.java 4KB
HelpController.java 4KB
HelpController.java 4KB
AnimalsService.java 4KB
AnimalsService.java 4KB
VolunteerService.java 3KB
MessageboardService.java 3KB
AnimalscollectionController.java 3KB
AnimalscollectionController.java 3KB
Animals.java 3KB
Animals.java 3KB
AdoptService.java 3KB
VolunteerService.java 3KB
DonatepeopleService.java 3KB
AdoptService.java 3KB
SendEmailController.java 3KB
SendEmailController.java 3KB
NoticeService.java 3KB
DonatepeopleService.java 3KB
Volunteer.java 3KB
Volunteer.java 3KB
NoticeService.java 3KB
AnimalsVideoService.java 3KB
HelpService.java 3KB
HelpService.java 3KB
SendEmailService.java 3KB
SendEmailService.java 3KB
Help.java 3KB
Help.java 3KB
AliPayService.java 3KB
BuserService.java 3KB
BuserService.java 3KB
UploadService.java 2KB
UploadService.java 2KB
AliPayService.java 2KB
Notice.java 2KB
Notice.java 2KB
PrivateletterService.java 2KB
PrivateletterService.java 2KB
AuserService.java 2KB
AuserService.java 2KB
Donatepeople.java 2KB
Donatepeople.java 2KB
共 446 条
- 1
- 2
- 3
- 4
- 5
资源评论
lsx202406
- 粉丝: 1845
- 资源: 4247
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 三相三电平维也纳整流器simulink仿真模型 1控制算法采用电压电流双闭环控制; 2外部电压环路为PI控制器; 3
- linuxlinuxlinuxlinuxlinux
- wt5.txt数据库课程设计
- wt4.txtC语言教学
- SAR ADC逐次逼近型ADC全流程设计 包括SAR ADC的理论分析,从基本的ADC结构到电路原理 包括SAR ADC的Ma
- 脉冲注入法,持续注入,启动低速运行过程中注入,电感法,ipd,力矩保持,无霍尔无感方案,媲美有霍尔效果 bldc控制器方案,无
- 模电数电数字电路,数字频率计,multisim 使用555 正弦波,方波,三角波都能测 提供multisim可以运行的原文件以及
- 三维路径规划 基于灰狼改进算法的机器人路径规划mp-GWO和CS-GWO机器人路径规划算法 自由切GWO,CS-GWO算法进行对
- 智能车仿真 代码使用参考教程:教程地址
- 考虑源荷储协同互动的主动配电网优化调度研究 关键词:分布式光伏 储能 主动配电网 优化调度 需求响应 仿真软件:matlab+y
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功