Java使用阿里云oss上传的图片不能在线预览,访问图片地址直接下载问题(Amazon和腾讯云存储都是同样的处理)

解决方法:在图片上传的时候加入以下代码即可:

// meta设置请求头,解决访问图片地址直接下载
ObjectMetadata meta = new ObjectMetadata();
meta.setContentType(getContentType(filepath.substring(filepath.lastIndexOf("."))));
ossClient.putObject(new PutObjectRequest(bucketName, filepath, fileupload,meta));

getContentType方法

public static String getContentType(String FilenameExtension) {
        if (FilenameExtension.equalsIgnoreCase(".bmp")) {
            return "image/bmp";
        }
        if (FilenameExtension.equalsIgnoreCase(".gif")) {
            return "image/gif";
        }
        if (FilenameExtension.equalsIgnoreCase(".jpeg") ||
                FilenameExtension.equalsIgnoreCase(".jpg") ||
                FilenameExtension.equalsIgnoreCase(".png")) {
            return "image/jpg";
        }
        if (FilenameExtension.equalsIgnoreCase(".html")) {
            return "text/html";
        }
        if (FilenameExtension.equalsIgnoreCase(".txt")) {
            return "text/plain";
        }
        if (FilenameExtension.equalsIgnoreCase(".vsd")) {
            return "application/vnd.visio";
        }
        if (FilenameExtension.equalsIgnoreCase(".pptx") ||
                FilenameExtension.equalsIgnoreCase(".ppt")) {
            return "application/vnd.ms-powerpoint";
        }
        if (FilenameExtension.equalsIgnoreCase(".docx") ||
                FilenameExtension.equalsIgnoreCase(".doc")) {
            return "application/msword";
        }
        if (FilenameExtension.equalsIgnoreCase(".xml")) {
            return "text/xml";
        }
        return "image/jpg";
    }

Amazon和腾讯的云存储也是一样的道理,想要在线访问上传的图片而不是直接下载,那么久就将Content-type设置为image/jpg,原本图片类型默认image/jpeg,所以才会直接下载


版权声明:本文为ChOLg原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。