Masalah dengan nginx mengendalikan laluan sebenar imej
怪我咯
怪我咯 2017-05-16 17:21:57
0
1
516

Dalam projek, fail yang dimuat naik dinamakan semula oleh sha1 Selepas gambar dimuat naik, ia dinamakan c2e47454e951697811c0531949d4d318
Laluan akses di bahagian penyemak imbas ialah: /img/c2e47454e919054e914578e914578e914578e919994e91999d x nama untuk gambar!

Selepas saya menggunakan, saya perlu menggunakan nginx untuk pemprosesan caching Jadi, izinkan saya bertanya kepada anda, bagaimana saya harus menanganinya:

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

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

Tolong bantu saya banyak-banyak! Terima kasih

怪我咯
怪我咯

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

membalas semua(1)
仅有的幸福

Pertama sekali, oleh kerana anda sudah sha1'd, anda tidak perlu menyimpan nama akhirannya lagi Apabila menyimpan, tukar semuanya kepada nilai sha1

Kemudian, jika anda mengakses Nginx secara langsung untuk mendapatkan imej, anda tidak akan mendapat nama fail yang betul, dan beberapa logik lain tidak mudah dikendalikan, jadi tulis sahaja pengawal untuk mengendalikannya:

    @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);
    }

Dengan cara ini, anda bukan sahaja boleh menggunakan cache Nginx, tetapi juga menggunakan kod anda sendiri untuk melakukan beberapa operasi logik, dan anda juga boleh menambah fungsi penghakiman kebenaran

Selain itu, konfigurasi Nginx tidak perlu diubah

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan