添加图片上传功能

master
bynt 1 year ago
parent 7294fa5c6b
commit 0116e4be01

@ -41,7 +41,6 @@ public final class MarshallingCodeCFactory {
configuration.setVersion(5); configuration.setVersion(5);
MarshallerProvider provider = new DefaultMarshallerProvider(marshallerFactory, configuration); MarshallerProvider provider = new DefaultMarshallerProvider(marshallerFactory, configuration);
//构建Netty的MarshallingEncoder对象MarshallingEncoder用于实现序列化接口的POJO对象序列化为二进制数组 //构建Netty的MarshallingEncoder对象MarshallingEncoder用于实现序列化接口的POJO对象序列化为二进制数组
MarshallingEncoder encoder = new MarshallingEncoder(provider); return new MarshallingEncoder(provider);
return encoder;
} }
} }

@ -2,12 +2,12 @@ package com.baiye.controller;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.aliyun.oss.OSS; import com.aliyun.oss.OSS;
import com.baiye.BadRequestException;
import com.baiye.core.base.api.Result; import com.baiye.core.base.api.Result;
import com.baiye.core.constant.DefaultNumberConstants; import com.baiye.core.constant.DefaultNumberConstants;
import com.baiye.BadRequestException;
import com.baiye.oss.OssConfig; import com.baiye.oss.OssConfig;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -43,7 +43,7 @@ public class AliYunOssUpload {
if (ObjectUtil.isNotNull(file) && if (ObjectUtil.isNotNull(file) &&
StringUtils.isNotBlank(file.getOriginalFilename())) { StringUtils.isNotBlank(file.getOriginalFilename())) {
String objectName = DateUtil.formatDate String objectName = DateUtil.formatDate
(DateUtil.date()).concat(StrUtil.SLASH) (DateUtil.date()).concat(StrPool.SLASH)
.concat(file.getOriginalFilename()); .concat(file.getOriginalFilename());
ossClient.putObject(bucketname, objectName, file.getInputStream()); ossClient.putObject(bucketname, objectName, file.getInputStream());
// 生成以GET方法访问的签名URL访客可以直接通过浏览器访问相关内容。 // 生成以GET方法访问的签名URL访客可以直接通过浏览器访问相关内容。

@ -0,0 +1,78 @@
package com.baiye.controller;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.aliyun.oss.OSS;
import com.baiye.BadRequestException;
import com.baiye.annotation.Inner;
import com.baiye.config.oss.OssConfig;
import com.baiye.core.base.api.Result;
import com.baiye.core.constant.DefaultNumberConstants;
import com.baiye.dto.ScreenshotDTO;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.net.URL;
/**
* @author Enzo
* @date : 2022/8/10
*/
@Slf4j
@RestController
@RequestMapping("/upload/screenshot")
public class AliYunOssUpload {
@Resource
private OssConfig ossConfig;
@Value("${aliyun.bucketname}")
private String bucketname;
@SneakyThrows
@Inner(value = false)
@PostMapping("/images")
public Result<String> uploadOssFile
(@RequestParam(value = "phone") String phone, @RequestParam(value = "file") MultipartFile file) {
OSS ossClient = ossConfig.ossClient();
if (ObjectUtil.isNotNull(file) &&
StringUtils.isNotBlank(file.getOriginalFilename())) {
String objectName = DateUtil.formatDate
(DateUtil.date()).concat(StrPool.SLASH)
.concat(file.getOriginalFilename());
ossClient.putObject(bucketname, objectName, file.getInputStream());
// 生成以GET方法访问的签名URL访客可以直接通过浏览器访问相关内容。
DateTime dateTime = DateUtil.offsetDay(DateUtil.date(), DefaultNumberConstants.TWO_HUNDRED);
URL url = ossClient.generatePresignedUrl(bucketname, objectName, dateTime);
ossClient.shutdown();
String downUrl = url.toString();
log.info("====================== the down url as {} ======================", downUrl);
ScreenshotDTO screenshot = ScreenshotDTO.builder().url(downUrl).phone(phone).build();
String post = HttpUtil.post("http://101.34.63.53/phone/api/v1/xhs/remoteLogin", JSONUtil.toJsonStr(screenshot));
log.info("====================== the result body as {} ====================== ", JSONUtil.toJsonStr(post));
return Result.data(post);
}
throw new BadRequestException("上传图片失败");
}
@Inner(value = false)
@GetMapping("/callback")
public Result<String> checkUploadFile(@RequestParam String url) {
OSS ossClient = ossConfig.ossClient();
String file = url.substring(url.lastIndexOf(StrPool.DOT));
ossClient.deleteObject(bucketname, file);
return Result.success();
}
}

@ -0,0 +1,50 @@
package com.baiye.test;
import com.baiye.core.constant.DefaultNumberConstants;
import com.baiye.core.constant.SysConstants;
import com.google.common.collect.Maps;
import com.google.common.net.HttpHeaders;
import lombok.extern.slf4j.Slf4j;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.Map;
/**
* @author Enzo
* @date : 2023/3/29
*/
@Slf4j
public class TiktokCookie {
public static void main(String[] args) throws IOException {
Connection connection = Jsoup.connect("https://www.xiaohongshu.com/explore/640efda4000000001303347d");
Map<String, String> articleMap = Maps.newConcurrentMap();
Map<String, String> hashMap = Maps.newHashMap();
hashMap.put(HttpHeaders.USER_AGENT, SysConstants.USER_AGENT);
hashMap.put("Cookie", "web_session=030037a31ddba445eeff9cc956234a02b5b3f3;");
// 设置单个请求头
Connection header = connection.headers(hashMap);
Document document = header.get();
if (document.getElementsByClass("title").size() > DefaultNumberConstants.ZERO_NUMBER) {
String title = document.getElementsByClass("title").get(DefaultNumberConstants.ZERO_NUMBER).text();
articleMap.put("title", title);
}
Elements elements = document.getElementsByClass("count");
articleMap.put("likeNum", elements.get(DefaultNumberConstants.ZERO_NUMBER).getElementsByTag("span").text());
articleMap.put("collectNum", elements.get(DefaultNumberConstants.ONE_NUMBER).getElementsByTag("span").text());
articleMap.put("commentNum", elements.get(DefaultNumberConstants.TWO_NUMBER).getElementsByTag("span").text());
}
}

@ -47,6 +47,8 @@ xiaoHongShu:
maxPoolSize: 16 maxPoolSize: 16
queueCapacity: 4 queueCapacity: 4
aliyun:
bucketname: baiye-cdp
# 文件存储路径 # 文件存储路径
file: file:

@ -57,6 +57,11 @@
<groupId>us.codecraft</groupId> <groupId>us.codecraft</groupId>
<artifactId>webmagic-core</artifactId> <artifactId>webmagic-core</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alicloud-oss</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

@ -0,0 +1,33 @@
package com.baiye.config.oss;
import com.alibaba.alicloud.context.AliCloudProperties;
import com.alibaba.alicloud.context.oss.OssProperties;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
/**
* @author Enzo
* @date : 2022/8/15
*/
@Configuration
@RequiredArgsConstructor
public class OssConfig {
private final OssProperties ossProperties;
private final AliCloudProperties aliCloudProperties;
@Bean
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public OSS ossClient() {
return new OSSClientBuilder().build
(ossProperties.getEndpoint(),
aliCloudProperties.getAccessKey(),
aliCloudProperties.getSecretKey());
}
}

@ -0,0 +1,20 @@
package com.baiye.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
/**
* @author Enzo
* @date : 2023/6/15
*/
@Data
@Builder
public class ScreenshotDTO {
@ApiModelProperty("文件链接")
private String url;
@ApiModelProperty("号码")
private String phone;
}

@ -0,0 +1,19 @@
package com.baiye.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
/**
* @author Enzo
* @date : 2023/6/15
*/
@Data
public class UploadImagesDTO {
@ApiModelProperty("上传文件")
private MultipartFile file;
@ApiModelProperty("号码")
private String phone;
}
Loading…
Cancel
Save