Javascript 在SpringMVC中创建下载链接
我正在开发一个SpringMVC应用程序。在应用程序中,我使用一种方法从截图中创建一个pdf文件,截图是使用前端的一些函数获取的。现在,有一个用户点击的按钮,它通过“POST”发送图像,然后将其转换为PDF。问题是,因为这是一个“帖子”,我无法使用正常的文件下载方法返回文件 经过一些研究,我发现jquery可以用来下载文件,但它同样需要下载URL。我正在发布我的代码来创建截图,PDF,请告诉我如何创建下载URL 控制器类:Javascript 在SpringMVC中创建下载链接,javascript,spring-mvc,download,Javascript,Spring Mvc,Download,我正在开发一个SpringMVC应用程序。在应用程序中,我使用一种方法从截图中创建一个pdf文件,截图是使用前端的一些函数获取的。现在,有一个用户点击的按钮,它通过“POST”发送图像,然后将其转换为PDF。问题是,因为这是一个“帖子”,我无法使用正常的文件下载方法返回文件 经过一些研究,我发现jquery可以用来下载文件,但它同样需要下载URL。我正在发布我的代码来创建截图,PDF,请告诉我如何创建下载URL 控制器类: @RequestMapping(value = "/canvas/sc
@RequestMapping(value = "/canvas/screenshot", method = RequestMethod.POST, produces = "application/pdf")
public
@ResponseBody
String saveCanvasScreenshot(@RequestBody String body, Model model,HttpServletResponse response) {
Person person = personService.getCurrentlyAuthenticatedUser();
body = body.substring(30);
String path = "/home/akshay/"+person.getFirstName()+".pdf";
try {
body = URLDecoder.decode(body, "UTF-8");
canvasImageBytes = body.getBytes();
canvasImageBytes = org.apache.commons.codec.binary.Base64.decodeBase64(canvasImageBytes);
Canvas canvas = canvasService.getCanvasById(staticcanvasid);
canvas.setCanvasimage(canvasImageBytes);
canvasService.addCanvas(canvas, person);
boolean b = convertimagetopdf(body);
if(b == true){
// And here I would like to sent the URL back as a String.
}
Javascript方法:
$("#pdf-creator").click(function(){
document.styleSheets[4].disabled=true;
var screenshot = $('#main').clone();
renderingScreenshot = true;
setWidthsForScreenshot(screenshot);
html2canvas($('#main'), {
onrendered: function(canvas) {
var img = canvas.toDataURL("image/png");
img = encodeURIComponent(String(img));
$.ajax({
url: baseURL + '/canvas/screenshot',
type: 'POST',
data: img,
success: function(){
document.styleSheets[4].disabled=false;
$('#loading-image').show();
},
error: function(xhr, status, error){
$('body').append(xhr.responseText);
document.styleSheets[4].disabled=false;
$('#loading-image').show();
}
});
}
});
});
initializeGridstack();
您可以返回下载链接作为响应,然后发出GET请求。在Spring中,您可以这样做,从可下载链接获取文件
@RequestMapping("/models/{fileId}.smth")
@ResponseBody
public HttpEntity<byte[]> getFile(@PathVariable String fileId) throws IOException {
byte[] model = org.apache.commons.io.FileUtils.readFileToByteArray(new File( "C:/folder/" + fileId + ".smth"));
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
headers.setContentLength(model.length);
return new HttpEntity<byte[]>(model, headers);
}
@RequestMapping(“/models/{fileId}.smth”)
@应答器
公共HttpEntity getFile(@PathVariable String fileId)引发IOException{
byte[]model=org.apache.commons.io.FileUtils.readFileToByteArray(新文件(“C:/folder/”+fileId+“.smth”);
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.MULTIPART\u FORM\u DATA);
headers.setContentLength(model.length);
返回新的HttpEntity(模型、标题);
}
请告诉我如何创建下载URL-请告诉我们如何保存pdf以便以后使用。pdf保存在磁盘上…文件路径在“path”变量中。问题出在哪里?您似乎知道如何“使用普通的文件下载方法返回文件”。所以我确信您有另一个控制器方法返回保存的pdf。@zeroplagl系统上的链接和下载URL是不同的。我想为该文件创建一个下载URL,用户可以使用该URL下载该文件。