recherche

Maison  >  Questions et réponses  >  le corps du texte

java - 如何实现springmvc将返回的给前端的pdf文件放在浏览器里预览?

想在浏览器里直接GET目标URL,然后就把PDF在浏览器里预览出来(不用前端插件的前提下),就像这样:

http://docs.spring.io/spring/...

后端代码:

@RequestMapping(value = "/showPDF", method = RequestMethod.GET)
public ResponseEntity<byte[]> pdfDownload(
        HttpServletRequest httpServletRequest
) throws IOException
{
    String path = XXX省略。。。
    File file = new File(path);
    HttpHeaders httpHeaders = new HttpHeaders();
    String fileName = file.getName();
    httpHeaders.setContentDispositionFormData("attachment",            java.net.URLEncoder.encode(fileName,"UTF-8"));
    httpHeaders.setContentType(MediaType.parseMediaType("application/pdf"));
    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
            httpHeaders,
            HttpStatus.CREATED);
}

然后想在前端直接GET这个URL地址:

http://localhost:8080/FileUpDown/showPDF

但是却成了下载文件而不是预览了。。。

这是chrome的输出:

**Response Headers**
*view source
Content-Disposition:form-data; name="attachment"; filename="1472111731322JavaScript%E6%9D%83%E5%A8%81%E6%8C%87%E5%8D%97.pdf"
Content-Length:21962427
Content-Type:application/octet-stream;charset=UTF-8
Date:Thu, 25 Aug 2016 08:32:56 GMT
Server:Apache-Coyote/1.1*

Conrent-Type明显不对,请问该如何解决?

迷茫迷茫2769 Il y a quelques jours975

répondre à tous(5)je répondrai

  • PHP中文网

    PHP中文网2017-04-18 09:54:15

    Merci pour vos réponses, c'est ma solution.
    1. Créez un dossier uploadFiles sous le chemin Web.

    2. Le mappage de fichiers PDF dans springMVC est comme le mappage de fichiers statiques.

     <mvc:resources mapping="/pdf/**" location="/uploadFiles/"/>
    

    3. Écrivez un contrôleur pour renvoyer le chemin URL du PDF.

    @Controller
    @CrossOrigin(origins = "*")
    public class PDFController {
        
        @ResponseBody
        @RequestMapping(value = "/pdf", method = RequestMethod.GET)
        public String pdfDownload() throws IOException
        {
            String retString = null;
            String dir = XXXX文件在服务器中路径。
            String path = httpServletRequest.getRequestURL() + dir.substring(dir.lastIndexOf('\'));
            retString = path.replaceAll("\\","/");
            Map<String,Object >map = new HashMap<>();
            map.put("code",0);
            map.put("pdf",retString);
            return JSON.toJSONString(map);
        }
    }
    

    4, les données JSON renvoyées.

    {"code":0,"pdf":"http://127.0.0.1:8080/pdf/1472128890165sample.pdf"}
    

    5. Ouvrez l'URL du pdf directement dans le navigateur pour prévisualiser le PDF.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 09:54:15

    Placez directement le fichier pdf dans un répertoire statique sur le serveur, redirigez l'adresse vers le chemin du fichier et le navigateur ouvrira automatiquement l'aperçu, vous pouvez essayer de saisir directement le chemin complet du prochain fichier pdf sur le disque local ; en faisant référence au navigateur, le navigateur ouvre également automatiquement l'aperçu

    répondre
    0
  • 高洛峰

    高洛峰2017-04-18 09:54:15

    Tout comme pour accéder aux fichiers statiques, comment mettez-vous vos fichiers js et comment mettez-vous votre pdf.

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:54:15

    Allez dans la section réponse. Il y a quelque chose devant la réponse, qui devrait conduire à l'aperçu

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:54:15

    Essayez de remplacer la ligne RequestMapping par :

    @RequestMapping(value = "/showPDF", method = RequestMethod.GET, produces = MediaType.APPLICATION_PDF_VALUE)

    répondre
    0
  • Annulerrépondre