在 Spring-MVC 中创建下载链接
Creating a download link in Spring-MVC
我正在开发一个Spring-MVC应用程序。在应用程序中,我正在使用一种方法从屏幕截图中创建pdf文件,方法是使用前端中的某些功能。现在,用户单击一个按钮,它通过"POST"发送图像,然后将其转换为PDF。问题是,因为这是一个"POST",所以我无法使用正常的文件下载方法来返回文件。
经过一些研究,我发现jquery可以用来下载文件,但它需要下载URL来。我正在发布用于创建屏幕截图的代码,PDF,请告诉我如何创建下载URL。
控制器类 :
@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 请求。在春季,您可以执行此操作以从可下载链接获取文件。
@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);
}
相关文章:
- 将下载链接从web浏览器传递给第三方应用程序
- 使用angular创建JSON下载链接
- jquery对话框可见时自动下载链接问题
- aFrame.io创建超链接和下载链接
- 将屏幕截图显示为pdf下载链接
- 为什么YouTube-dl下载链接来自YouTube在meteorjs应用程序中
- 从ASP网站抓取JavaScript下载链接
- 您如何处理需要使用 Angular 的授权令牌的下载链接
- 在 Spring-MVC 中创建下载链接
- 一键下载链接并在浏览器操作中添加书签
- 设置下载文件的名称,即使下载链接重定向到另一个
- 根据移动/桌面操作系统在网站上显示不同的按钮/下载链接
- 如何在动态生成的下载链接中解析csv文件
- 单击多个 HRREF 下载链接
- 我如何使一个下载链接与两个东西下载
- Html和javascript:如何将下载链接切换到按钮
- 如何为IPFS托管的文件创建下载链接
- 单击图像下载链接
- 在javascript中的两个下载链接之间创建一条折线
- 在不下载文件的情况下检查下载链接是否正常工作