前端
----------------------------------------------------------------------------------html
<view class="button-container-css">
<uni-file-picker v-model="fileValue" fileMediatype="all" mode="list" class="file-picker-css"
@select="select" @progress="progress" @success="success" @fail="fail" ref="fileInput">
<button class="button-css button-css-1">上传日志</button>
</uni-file-picker>
<button type="default" plain="true" @click="writeDiary" class="button-css">编辑日志</button>
</view>
----------------------------------------------------------------------------------methods
select(e) {
let fileName = e.tempFiles[0].name;
let temp = fileName.split('.')
if(temp[1] != "pdf"){
uni.showToast({
title: "只支持上传 pdf 格式文件!",
duration: 2000,
icon: "none",
});
return;
};
uni.uploadFile({
url: uploadPdf,
filePath: e.tempFilePaths[0],
name: "file",
header: {
accessToken: storage.getAccessToken(),
},
success: (uploadFileRes) => {
console.log(uploadFileRes);
}
});
console.log(uploadPdf)
},
后端
----------------------------------------------------------------------------------controller
@PostMapping("/upload/pdf")
@ApiOperation(value = "上传日志文件")
public ResultMessage<Object> uploadPdf(MultipartFile file, @RequestHeader String accessToken) {
return ResultUtil.data(diaryService.fileHandler(file,accessToken));
}
----------------------------------------------------------------------------------serviceimpl
private static LocalSetting localSetting;
private static Long nextInitSetting;
private static final Long INTERVAL = 60 * 3 * 1000L;
@Autowired
private SettingService settingService;
@Override
public String fileHandler(MultipartFile file, String accessToken) {
AuthUser authUser = UserContext.getAuthUser(cache, accessToken);
if (authUser == null) {
throw new ServiceException(ResultCode.USER_AUTHORITY_ERROR);
}
if (file == null || !file.getContentType().equals("application/pdf") || CharSequenceUtil.isEmpty(file.getContentType())) {
throw new ServiceException(ResultCode.FILE_TYPE_NOT_SUPPORT);
}
String rename = CommonUtil.rename(Objects.requireNonNull(file.getOriginalFilename()));
LocalSetting ls = getSetting();
try {
String path = "F:\\DIARY";
byte[] bs = new byte[1024 * 2];
int len = 0;
InputStream inputStream = file.getInputStream();
FileOutputStream fileOutputStream = new FileOutputStream(path + "\\" + rename);
while ((len = inputStream.read(bs)) != -1) {
fileOutputStream.write(bs, 0, len);
}
fileOutputStream.flush();
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return "http://" + ls.getEndPoint() + "/DIARY/" + rename;
}
private LocalSetting getSetting() {
if (localSetting == null || nextInitSetting == null || nextInitSetting < System.currentTimeMillis()) {
Setting setting = settingService.get(SettingEnum.LOCAL_SETTING.name());
if (setting == null || StrUtil.isBlank(setting.getSettingValue())) {
throw new ServiceException(ResultCode.OSS_NOT_EXIST);
}
nextInitSetting = System.currentTimeMillis() + INTERVAL;
localSetting = new Gson().fromJson(setting.getSettingValue(), LocalSetting.class);
return localSetting;
}
return localSetting;
}
----------------------------------------------------------------------------------WebMvcConfigurer
@Configuration
@EnableWebMvc
public class StaticResourceConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/IMAGES/**").addResourceLocations("classpath:/IMAGES/");
registry.addResourceHandler("/DIARY/**").addResourceLocations("file:F:/DIARY/");
}
}