java putObject语句无法将文件上传到aliyun OSS
我写了一个将视频文件上传到阿里云OSS的函数。该功能在spring boot中运行良好,但在独立的tomcat中无法运行。问题是由语句ossClient.putObject(bucket,Objectname,file.getInputStream());
引起的
谁能告诉我怎么了
在spring boot中,我运行了这个功能,并成功地将文件上传到aliyun OSS。然后我将代码导出到war文件并部署到tomcat,然后就无法工作了。 当没有可丢弃的异常时,它会抛出500个内部服务器错误
@Controller
public class UploadVideoController {
private final static org.slf4j.Logger log = LoggerFactory.getLogger(UploadVideoController.class);
@Autowired
private VideoFileRepository videoFileRepository;
@Autowired
private ApplicationUserRepository applicationUserRepository;
@Autowired
private VideoFileInSolrRepository videoSolrRepo;
String endpoint = "http://oss-cn-zhangjiakou.aliyuncs.com";
String accessKeyId = "my id";
String accessKeySecret = "my secret";
String bucket = "studytech";
String aliyunURL = "https://studytech.oss-cn-zhangjiakou.aliyuncs.com/";
@RequestMapping("/videoUpload")
public String UploadPage(Model model) {
return "uploadVideoPage";
}
@RequestMapping("/doVideoUpload")
public String doupload(Model model, @RequestParam("files") MultipartFile[] files) throws IOException {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
ApplicationUser au = applicationUserRepository.findByUsername(authentication.getName());
StringBuilder fileNames = new StringBuilder();
StringBuilder fileNotUpload = new StringBuilder();
Path path;
log.info("realPathtoUploads = {}", endpoint);
for (MultipartFile file : files) {
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
String Objectname = file.getOriginalFilename();
path = Paths.get(Objectname);
String filetype = Files.probeContentType(path);
VideoFile vf = videoFileRepository.findByFileName(Objectname);
if (filetype.equals("video/mp4") && vf == null) {
try {
ossClient.putObject(bucket, Objectname, file.getInputStream());
VideoFile document = new VideoFile(file.getOriginalFilename(), file.getContentType(),
aliyunURL + file.getOriginalFilename(), "test");
document.setAppuser(au);
au.getVideoFilelist().add(document);
videoFileRepository.save(document);
VideoFileInSolr solrdocument = new VideoFileInSolr(file.getOriginalFilename(),
aliyunURL + file.getOriginalFilename());
videoSolrRepo.save(solrdocument);
fileNames.append(file.getOriginalFilename() + " ");
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("user or file not found");
} catch (Throwable e) {
e.printStackTrace();
} finally {
ossClient.shutdown();
}
} else {
fileNotUpload.append(file.getOriginalFilename() + " ");
}
}
if (fileNames != null) {
model.addAttribute("msg1", "Successfully uploaded files: " + fileNames.toString());
}
if (fileNotUpload != null) {
model.addAttribute("msg2", "Files alread exist or file extension is not .mp4: " + fileNotUpload.toString());
}
return "uploadVideoPage";
}
}
共 (0) 个答案