2015-09-01 23 views
7

Spring Framework MVC arka ucuna jsPDF kullanarak frontend javascript'te oluşturduğum bir PDF'yi aktarmaya çalışıyorum. Aşağıda yazdım ön uç kodudur:İkili veri kullanarak AJAX ile jsPDF'den PDF'yi yükleme

var filename = "thefile"; 
var constructURL = '/daas-rest-services/dashboard/pdfPrintUpload/' + filename; 
var url = restService.getUrl(constructURL); 
var fileBytes = btoa(pdf.output()); 
$http.post(url, fileBytes).success(function(data) { 
    console.log(data); 
    }) 
    .error(function(e, a) { 
    console.log(e); 
    console.log(a); 

    }); 

pdf değişken düzgün oluşturulduktan ve teyit edebilir olan pdf.save ("dosya adı") çağrılırken doğru açılır. Aşağıda bu çağrı için Bahar MVC arka uçta yazılmıştır Java kodu:

Hata 400:

@RequestMapping(method = RequestMethod.POST, value = "/pdfPrintUpload/{documentName}") 
public @ResponseBody String postPrintDocument(@PathVariable String documentName, @RequestParam byte[] fileBytes) { 
    String methodName = "postPrintDocument"; 
    if(logger.isLoggable(Level.FINER)){ 
     logger.entering(CLASS_NAME, methodName);    
    } 
    String check; 
    if(fileBytes != null){ 
     check = "not null"; 
    } else { 
     check = "null "; 
    } 
    //Decoding the bytestream 
    //Save to file location 
    //return file location 
    String returnValue = "HI " + documentName + " " + check; 
    if (logger.isLoggable(Level.FINER)) { 
     logger.exiting(CLASS_NAME, methodName); 
    } 
    return returnValue; 
} 

Bir istek yapmak her zaman, Banasöylemediğin 400 Hataları alıyorum Gerekli byte [] parametresi ' fileBytes '

bir büyük veri miktarının iletilmediğini isteği bilgisi olarak teyit edebilir, ancak arka uç parametresini kabul istediğiniz görünmüyor mevcut değildir.

Bunu yapmanın amacı, verileri pdf'den alabilmek ve daha sonra arka sayfada deşifre edebilmek, böylece pdf'yi sunucudaki bir konuma yayınlayabilmek. Bu isteklerin başarısız olması için kodumda eksik olan bir şey var mı ve bu işlevselliği elde etmenin daha kolay bir yolu var mı?

cevap

3

ng dosyası ile yükleme yapmayı deneyin. Çözelti @RequestBody için @RequestParam değişiyordu bu

@RequestMapping(value = "/pdfPrintUpload") 
    @ResponseBody 
    public void postPrintDocument(@RequestParam("file") MultipartFile file) { 

      InputStream is = file.getInputStream(); 
      OutputStream os = new FileOutputStream(/*path to save file*/); 
      byte[] buffer = new byte[1024]; 
      int length; 
      while ((length = is.read(buffer)) > 0) 
       os.write(buffer, 0, length); 
      is.close(); 
      os.close(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    }