angularJS+Ionic 모 바 일 사진 업로드 솔 루 션
오늘 의 demo 는 친 구 를 도와 만 든 모 바 일 위 챗 공중 번호 프로젝트 입 니 다.프로젝트 구 조 는 angular+ionic 을 사용 합 니 다.dom 의 조작 jQuery 는 매우 편리 하지만 jQuery 는 비교적 두 꺼 워 서 마지막 으로 경량급 zepto 로 프로젝트 dom 을 조작 합 니 다.
프로젝트 중 하 나 는 개인 작품 을 업로드 하 는 것 이 고 기능 을 실현 하려 면 H5 새 대상 FormData 대상,XML HttpRequest 대상,FileReader 대상 이 필요 하 다.이 세 개의 대상 만 있 으 면 되 고,말 은 더 이상 코드 를 말 하지 않 는 다.
dom 구조:
js 구조:
function1:
$scope.imgList = [];
$scope.setUploader = function () {
var files = document.getElementById('photo');
files.click();
$(files).unbind().on('change',function (e) {
var file = e.target.value;
if (!/.(jpg|jpeg|png|GIF|JPG|png)$/.test(file)) {
common.toast(' jpeg,jpg,png ');
return false;
};
fsubmit();
readAsBinaryString();
});
};
function2:
function fsubmit() {
var itemImg = {};
var form=document.getElementById("form1");
console.log('form',form)
var formData=new FormData(form);
formData.append('wxdesigner_sid',$.fn.cookie('wxdesigner_sid'));
formData.append('id',$scope.masterInfo.id);
formData.append('pc','1');
var oReq = new XMLHttpRequest();
oReq.onreadystatechange=function(){
if(oReq.readyState==4){
if(oReq.status==200){
var json=JSON.parse(oReq.responseText);
console.log(json)
if(json.Success) {
itemImg = json.Data;
$scope.imgList=itemImg;
console.log($scope.imgList)
$scope.$apply();
itemImg = {};
}
}
}
};
console.log(oReq)
console.log(formData)
oReq.open("POST", common.api+"Wxdesigner/Designer/uploadworks");
oReq.send(formData);
return false;
};
// FileReader
if(typeof FileReader == 'undefined'){
//
file.setAttribute("disabled","disabled");
}
function3:
function readAsBinaryString(){
var file = document.getElementById('photo').files[0];
console.log(file)
var reader = new FileReader();
//
reader.readAsDataURL(file);
reader.onload=function(f){
$scope.masterInfo.thumblist.push(f.currentTarget.result)
console.log($scope.masterInfo)
$scope.$apply()
}
}
전체 그림 에 올 라 온 dom 층 은 간단 합 니 다.form 폼 에 트리거 폼 을 추가 하 는 함수(function 1)입 니 다.function 1 에서의 클릭 이 벤트 를 가 져 옵 니 다.그림 을 선택 할 때 판단 을 합 니 다.지원 하 는 그림 형식 을 초과 할 때 알림 을 줍 니 다.그리고 뒤에서 function 2 와 function 3 를 호출 합 니 다.
function 2 에서 form 폼 대상 을 가 져 온 다음 FormData 대상 을 만 들 고 가 져 온 form 폼 을 FormData 에 전송 한 다음 append 에서 그림 을 올 리 는 인 자 를 만 듭 니 다.new XML HttpRequest 대상 을 만 든 다음 open 에서 XHR 요청 인 터 페 이 스 를 보 내 고 send(formData)는 인 터 페 이 스 를 전달 합 니 다.
이때 까지 인터페이스 전송 에 성 공 했 습 니 다.
여기 있 는 네 개의 매개 변 수 는 formData 의 네 개의 매개 변수 입 니 다.
인터페이스 가 성공 적 이다.
여기에 문제 가 있 습 니 다.이미지 업로드 가 데이터베이스 에 성공 적 으로 기록 되 었 습 니 다.그러나 이 때 는 로 컬 에서 사용자 에 게 보 여 줘 야 하지만 웹 페이지 는 장치 로 컬 그림 에 직접 접근 할 수 없 기 때문에 올 린 그림 파일 을 DataURL 로 읽 어 로 컬 에 보 여 줘 야 합 니 다.
먼저 New FileReader 대상 을 가 져 온 input file 대상 을 FileReader 의 readAsDataURL()방법 으로 전송 합 니 다.이 방법 은 파일 을 DataURL 로 읽 는 것 입 니 다.
그리고 FileReader 의 onload 방법 을 호출 합 니 다.이 방법의 result 는 변 환 된 url 이 있 기 때문에 이 url 을 얻 을 수 있 습 니 다.사실은 base 64 인 코딩 을 거 쳤 습 니 다.그리고 push 는 그림 목록 의 마지막 까지
여기 서 문 제 를 해 결 했 습 니 다.전단 에 로 컬 그림 을 보 여 주 었 고 그림 도 데이터 베 이 스 를 기록 하 였 습 니 다.페이지 를 다시 새로 고 칠 때 데이터 베 이 스 를 받 았 습 니 다.
물론 여 기 는 하나의 방법 일 뿐 입 니 다.모 바 일 이미지 업로드 플러그 인 이 비 일비 재 합 니 다.심지어 각종 끌 어 올 린 이미지 업로드 플러그 인 도 많 습 니 다.이 곳 은 프로젝트 에 플러그 인 을 도입 하지 않 아 도 되 는 이미지 업로드 의 간단 한 기능 에 적합 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ionic 숨김tabs 방법일. ng-class="{'tabs-item-hide': $root.hideTabs}"> 이. 이 컨트롤러 밑에 덧붙여라.directive: 삼. html 페이지에서hide-tabs 인용...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.