有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案