Problème avec nginx gérant le chemin réel des images
怪我咯
怪我咯 2017-05-16 17:21:57
0
1
518

Dans le projet, les fichiers téléchargés sont renommés par sha1. Une fois une image téléchargée, elle est nommée c2e47454e951697811c0531949d4d318.
Le chemin d'accès côté navigateur est : /img/c2e47454e951697811c0531949d4d318. la photo !

Après mon déploiement, je dois utiliser nginx pour le traitement de la mise en cache. Alors, laissez-moi vous demander, comment dois-je gérer cela :

.
怎么在nignx里配置映射到真实的 image_save_path/img/c2/e4/7454e951697811c0531949d4d318.[jpg|gif|png]

location ~/img/*$ {
    root image_real_path_here;
    # 此处不太理解该如何处理图片名称的前四个字符,变成路径形式,        
}

S'il vous plaît, aidez-moi beaucoup ! Merci

怪我咯
怪我咯

走同样的路,发现不同的人生

répondre à tous(1)
仅有的幸福

Tout d'abord, puisque vous l'avez déjà sha1, vous n'avez plus besoin de stocker son nom de suffixe Lors du stockage, remplacez tout par la valeur sha1

.

Ensuite, si vous accédez directement à Nginx pour obtenir l'image, vous n'obtiendrez pas le nom de fichier correct, et certaines autres logiques ne sont pas faciles à gérer, alors écrivez simplement un contrôleur pour le gérer :

    @RequestMapping(value = "imgs/{sha1}/download", method = RequestMethod.GET)
    @ResponseBody
    public HttpEntity<byte[]> downloadAttachment(@PathVariable("sha1") String sha1)
            throws UnsupportedEncodingException {
        Attachment attachment = attachmentService.getBySha1(sha1);

        if (attachment == null) {
            throw new ResourceNotFoundException();
        }

        HttpHeaders header = new HttpHeaders();
        header.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        String filename = new String(attachment.getName().getBytes("GB2312"), "ISO_8859_1");
        header.setContentDispositionFormData("attachment", filename);
        header.add("X-Accel-Redirect", String.format("/img/c2/e4/%s", sha1));
        header.add("X-Accel-Charset", "utf-8");

        return new HttpEntity<byte[]>(null, header);
    }

De cette façon, vous pouvez non seulement utiliser le cache de Nginx, mais également utiliser votre propre code pour effectuer certaines opérations logiques, et vous pouvez également ajouter la fonction de jugement d'autorisation

De plus, la configuration de Nginx n'a pas besoin d'être modifiée

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal