pom.xml
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <!-- 安全不容易出错--> <version>5.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.22</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.2.2</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.2</version> </dependency> </dependencies>
web.xml
<!-- stringmvc自带注解--> <filter> <filter-name>encodingfilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <!-- 指定编码类型为encoding赋值--> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>forceRequestEncoding</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>forceResponseEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingfilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
springmvc.xml
<!--开启注解包扫描--> <context:component-scan base-package="www.controller"/> <!--springmvc注解驱动,@RequestMapping --> <mvc:annotation-driven/> <!-- 静态注解 css img js html--> <mvc:default-servlet-handler/> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--这里的单位为字节10M*1024K*1024--> <property name="maxUploadSize" value="10485760"/> </bean>
OSSUtils
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。 String endpoint = "***"; // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 String accessKeyId = "**"; String accessKeySecret = "*"; // 填写Bucket名称,例如examplebucket。 String bucketName = "*"; // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。 //你上传到oss后的名字 会根据日期帮你创建文件夹。 String objectName =fileName(file); // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); try { InputStream inputStream = file.getInputStream(); ossClient.putObject(bucketName, objectName, inputStream); } catch (Exception oe) { } finally { if (ossClient != null) { ossClient.shutdown(); } } String url="https://"+bucketName+"."+endpoint+"/"+objectName; return url; } //获取上传到oss后的名字 private static String fileName(MultipartFile file){ Calendar calendar=Calendar.getInstance(); String name=calendar.get(Calendar.YEAR)+"/"+(calendar.get(Calendar.MONTH)+1)+"/"+ calendar.get(Calendar.DATE)+"/"+ UUID.randomUUID().toString().replace("-","")+ file.getOriginalFilename(); return name; }
User
private String photo; private String name; private String pwd; private String address;
controller
@RestController
public class uploadController {
@RequestMapping("/upload")
public CommonResult upload(MultipartFile file)throws Exception {
String url = OSSUtils.show(file);
return new CommonResult(2000,"上传成功",url);
}
@RequestMapping("/addUser")
public CommonResult addUser(@RequestBody User user) {
System.out.println(user);
return new CommonResult(2000,"成功",null);
}
}