blob secuencia binaria de vista previa en línea pdf

me molesta noche una pregunta, finalmente resuelto, sólo comenzaron a utilizar el Ajax para manipular los resultados siempre mostrar una pantalla en blanco, a continuación, utilizar nativa, y axios son normales, pegue el código de barras

código nodo simula el fondo hay una prueba de fondo puede ser ignorada

var express = require('express')
var router = express.Router()
var fs = require('fs')

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' })
})

router.post('/getPdf', function(req, res, next) {
  // 这里设置是为了让前端访问是预览形式,而不是下载
  res.set('Content-Type', 'application/pdf')
  fs.readFile('/test.pdf', (err, data) => {
    if (err) {
      console.log('报错了:', err)
    } else {
      console.log('传出数据:', data)
      // 好多说的是返回data.toString(),但类型会错误,因为是express封装过,直接data返回就好
      res.send(data)
    }
  })
})

La primera front-end código de prueba y error, al menos una hora de ver alrededor de una mancha o ArrayBuffer responseType, el resultado es ajax petición, que no va a funcionar, desnuda en blanco pdf vista previa en línea, Oh!

$.ajax({
        url: 'http://127.0.0.1:3000/getPdf',
        type: 'POST',
        responseType: 'blob',
        data: {},
        success: function(res) {
          var blob = new Blob([res], {
            type: 'application/pdf;chartset=UTF-8'
          })
          var fileURL = URL.createObjectURL(blob)
          window.open(fileURL)
        },
        error: function(err) {
          console.log('失败:', err)
        }
})

El segundo ensayo y error, solicitud original, que se puede visualizar directamente, pero los intentos anteriores me siento un poco perdida de tiempo, me gustaría probar axiso confirmar lo que es un problema ajax

var xhr = new XMLHttpRequest()
      xhr.open('POST', 'http://127.0.0.1:3000/getPdf', true)
      xhr.responseType = 'blob'
      xhr.onload = function() {
        if (this.status == 200) {
          var blob = this.response
          var fileURL = URL.createObjectURL(blob)
          var Dom = `<object data="${fileURL}" type="application/pdf" style="width: 400px; height: 400px;"></object>`
          $('body').append(Dom)
          // window.open(fileURL)
        }
      }
xhr.send()

El tercer ensayo y error, axios, oportunidad y llegó a la conclusión de que, además de ajax, parece bien

axios({
        methods: 'POST',
        url: 'http://127.0.0.1:3000/getPdf',
        responseType: 'blob'
      }).then(res => {
        var blob = new Blob([res.data], {
          type: 'application/pdf;chartset=UTF-8'
        })
        let fileURL= URL.createObjectURL(blob)

        // 下载代码
        // let downEle = document.createElement('a')
        // let fname = `download` //下载文件的名字
        // downEle.href = fileURL
        // downEle.setAttribute('download', fname)
        // document.body.appendChild(downEle)
        // downEle.click()
        window.open(fileURL)
})

Vista previa en línea considerada para dar un programa documental que, no está claro problema ajax, pero fue capaz de conseguir la función, patada llamar a un día!

Supongo que te gusta

Origin www.cnblogs.com/yzyh/p/12617121.html
Recomendado
Clasificación