이 글에서는 주로 angularjs의 파일 업로드 기능에 대해 설명합니다. Anglejs에서 파일을 업로드하는 방법을 알고 계시나요? Angularjs는 백엔드에서 사용되는 것이 무엇인지 아시나요? 지금 이 글을 읽어보세요
AngularJS
를 사용하여 파일을 업로드하세요AngularJS
上传文件
前台是Angular
页面
后台使用SpringBoot/SpirngMVC
html
<p> <input id="fileUpload" type="file" /> <button ng-click="uploadFile()">上传</button></p>
js
$scope.upload = function(){ var form = new FormData(); var file = document.getElementById("fileUpload").files[0]; form.append('file', file); $http({ method: 'POST', url: '/upload', data: form, headers: {'Content-Type': undefined}, transformRequest: angular.identity }).success(function (data) { console.log('upload success'); }).error(function (data) { console.log('upload fail'); }) }
注意:
AngularJS默认的
'Content-Type'
是application/json
,通过设置'Content-Type': undefined
,这样浏览器不仅帮我们把Content-Type
设置为multipart/form-data
,还填充上当前的boundary
,如果手动设置为:
'Content-Type': multipart/form-data
,后台会抛出异常:the request was rejected because no multipart boundary was found
boundary
是随机生成的字符串,用来分隔文本的开始和结束通过设置
transformRequest: angular.identity
,anjularjs transformRequest function
将序列化我们的formdata object
,也可以不添加
后台
@RequestMapping("/upload") public void uploadFile(@RequestParam(value = "file" , required = true) MultipartFile file) { //deal with file }
注意
文件必须通过@RequestParam注解来获取,且需指定value才能获取到
这样就完成了上传文件
html
<p> <input id="fileUpload" type="file" /> <button ng-click="ok()">上传</button><br> <input ng-model="user.username" /> <input ng-model="user.password" /> </p>
js
$scope.ok = function () { var form = new FormData(); var file = document.getElementById("fileUpload").files[0]; var user =JSON.stringify($scope.user); form.append('file', file); form.append('user',user); $http({ method: 'POST', url: '/addUser', data: form, headers: {'Content-Type': undefined}, transformRequest: angular.identity }).success(function (data) { console.log('operation success'); }).error(function (data) { console.log('operation fail'); }) };
注意
需要将Object转为String后在附加到form上,否则会直接被转为字符串[Object,object]
后台(想看更多就到PHP中文网AngularJS开发手册中学习)
@RequestMapping("/upload") public Map<String, Object> upload(@RequestParam(value = "file") MultipartFile file, @RequestParam(value = "user", required = true) String user) { try (FileInputStream in = (FileInputStream) headImg.getInputStream(); FileOutputStream out = new FileOutputStream("filePathAndName")) { //将Json对象解析为UserModel对象 ObjectMapper objectMapper = new ObjectMapper(); UserModel userModel = objectMapper.readValue(user, UserModel.class); //保存文件到filePathAndName int hasRead = 0; byte[] bytes = new byte[1024]; while ((hasRead = in.read(bytes)) > 0) { out.write(bytes, 0, hasRead); } } catch (IOException e) { e.printStackTrace(); } }
注意
ObjectMapper
为com.fasterxml.jackson.databind.ObjectMapper
使用
AngularJS
html🎜🎜에서페이지는 백그라운드
파일 업로드
SpringBoot/SpirngMVC
를 사용합니다. 🎜rrreee🎜🎜🎜js🎜🎜🎜rrreee🎜 🎜참고: 🎜🎜🎜🎜AngularJS의 기본 'Content-Type'
은 application/json
입니다. >'Content-Type': undefine 브라우저는 Content-Type
을 multipart/form-data
로 설정하는 데 도움을 줄 뿐만 아니라 현재 경계
, 🎜🎜🎜 🎜수동으로 설정한 경우: 'Content-Type': multipart/form-data
, 예외가 백그라운드에서 발생합니다: 다중 부분 경계가 발견되지 않아 요청이 거부되었습니다.
🎜🎜 🎜🎜경계
는 텍스트의 시작과 끝을 구분하는 데 사용되는 무작위로 생성된 문자열입니다🎜🎜🎜🎜 설정 변환 요청: angle.identity
, anjularjs 변환 요청 함수
는 formdata 객체
를 직렬화합니다. 그렇지 않으면 🎜🎜🎜🎜🎜🎜🎜backend🎜🎜🎜rrreee를 추가할 수 없습니다. 🎜🎜Note🎜🎜🎜🎜파일은 @RequestParam 주석을 통해 얻어야 하며, 🎜🎜🎜🎜🎜🎜🎜이렇게 하면 파일 업로드가 완료됩니다🎜🎜🎜ObjectMapper
는 com.fasterxml.jackson.databind.ObjectMapper입니다.
🎜🎜🎜🎜🎜🎜AngularJS
를 사용하여 파일 업로드하기🎜🎜🎜이 글은 여기에서 끝납니다. (자세한 내용을 보려면 PHP 중국어 웹사이트🎜AngularJS 사용자 매뉴얼🎜을 방문하세요. ) 궁금한 점이 있으면 아래에 메시지를 남겨주세요. 🎜🎜🎜🎜🎜🎜🎜🎜🎜위 내용은 AngularJS에서 파일을 업로드하는 방법은 무엇입니까? Anglejs 업로드 기능에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!