不同于传统JSP应用直接可以使用<input type="file"/>
进行文件上传,在Angular中表单一般是绑定到后台的一个对象上,然后通过AJAX对服务器发起异步请求,那么如何在Angular中实现文件上传呢?
前端实现
此处我们使用primeNG提供的文件上传组件
但是除了文件本身外,我们还需要提交一些额外的JSON数据给服务器进行处理,所以将customUpload
属性设为true
,然后自定义自己的上传逻辑。
此处不要手动指定Content-Type,angular会自动指定类型为multipart/form-data,并且生成随机字符串来分隔不同的文件与json
后端实现
后端采用spring mvc来处理请求,注意前端传过来的JSON信息无法直接解析(可能是我的处理方式不对),所以作为字符串类型接受,文件由于我们采用了多文件上传,所以接受的参数类型是`MultipartFile[]``
|
|
下载参考
下载时直接获取文件在服务器的路径然后用byte[]进行返回,在前端使用window.open(url)
打开即可。不推荐使用window.location.href=
。
遇到异常,如文件不存在时,后者会导致angular应用整个跳转到错误页面。而前者是新打开一个错误页。
下载实现代码参考: