찾다
웹 프론트엔드JS 튜토리얼AngularJS 파일 업로드 기능에 대해 얼마나 알고 계시나요? 몇 분 안에 Anglejs 파일 업로드에 대해 알려주세요.

이 기사는 주로 angularjs의 파일 업로드 기능에 대해 설명합니다. 이해하지 못하는 사람이라면 누구나 읽어볼 수 있기를 바랍니다. 이 글 함께 보시죠

문제 설명첨부파일 업로드

테스트 결과는 첨부파일로 업로드됩니다.

AngularJS 파일 업로드 기능에 대해 얼마나 알고 계시나요? 몇 분 안에 Anglejs 파일 업로드에 대해 알려주세요.

여기서 api를 무시하세요. api

实现的任务就是,点击选择文件,选择之后可以清楚掉该文件。

插件介绍

用到了项目映入过的一个插件,angular-file-upload。

插件很简单,就是一个指令,我们在它提供给我们的指令中声明一个uploader对象,这个对象表示在不同的时间下要执行什么操作,另一种观察者模式。

功能实现

使用指令

官网给出了该指令的很多种用法,这里选择最简单的,Single,单文件上传。

AngularJS 파일 업로드 기능에 대해 얼마나 알고 계시나요? 몇 분 안에 Anglejs 파일 업로드에 대해 알려주세요.

<input>

一个file类型的input,使用nv-file-select指令,传给该指令一个uploader对象作为参数。

很简单的逻辑,新建一个FileUploader的对象,然后重写它的onAfterAddingFile方法,就是在文件添加完成之后,也就是点击选择文件,选中文件,点击完成之后执行的一个方法。

此方法中我们直接对文件进行上传操作。

// 新建文件上传实例
self.uploader = new FileUploader();

// 重写文件添加后的方法
self.uploader.onAfterAddingFile = function(fileItem) {
    // 打印日志
    if (config.debug) { console.info('onAfterAddingFile', fileItem); }
    // 上传文件
    self.upload(fileItem);
};

// 传给视图
$scope.uploader = self.uploader;

如果将文件上传封装成指令,以上代码应该方法指令的controller方法中执行!!!

关于指令中的compilecontrollerlink的执行详解,请参考正确地使用 Angular Directive 中的 compile,controller 与 link。

原因分析

可能是nv-file-select指令在实现时在link函数中进行各种事件的绑定,绑定时就需要我们的uploader对象。

而如果我们将其放在了link函数里,该指令的link函数是晚于nv-file-selectlink函数执行的,所以无效。

upload

// 上传文件
self.upload = function(data) {
    // 上传文件
    AttachmentService.uploadFile(data._file)
        .then(function success(response) {
                // 将上传成功的附件绑定再ngModel中
                $scope.ngModel = response.data;
                // 显示上传按钮
                self.showClear();
            }, function error() {
                // 提示用户上传失败
                sweetAlert.swal({
                    title: "对不起",
                    text: "上传的附件不能大于1M,请确认附件是否大于1M"
                });
            });
};

清空

用户上传错了文件怎么办呢?添加一个清空按钮,如果上传文件之后就显示。

// 清空选中文件
self.clear = function() {
    self.deleteFile(scope.ngModel.id);
};

// 删除附件
self.deleteFile = function(id) {
    AttachmentService.deleteFile(id, function success() {
        // 将附件赋为空对象
        scope.ngModel = undefined;
        // 隐藏清空按钮
        self.hideClear();
    });
};

scope.clear = self.clear;

但是这里会有一个问题,这里仅仅是删除了服务器上的附件,而文件的选中效果还是在的,这里还是显示选中的文件名的。

AngularJS 파일 업로드 기능에 대해 얼마나 알고 계시나요? 몇 분 안에 Anglejs 파일 업로드에 대해 알려주세요.

解决方案就是用一个form把它套起来,将button的类型设置为reset,点击按钮时,就会清空input中的内容了。


    
                 

            <input>         

        

                     

    

    <input>     

设置为reset之后就会出现新的问题,因为是在一个form表单里套的这个指令,所以reset,将其他的也都清空了。

ng-form

ng-form解决了问题。

这是ng-form指令的官方解释:

HTML does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a sub-group of controls needs to be determined.

HTML不允许嵌套form元素,ng-form被用来嵌套form,如果一个子的form组需要被验证。(想看更多就到PHP中文网angularjs学习手册中学习)

但是ng-form并没有实现form的功能,ng-submit就不能使用,想想这样设计也是合理的,如果ng-form也能submit,嵌套form,一个submitbutton,提交谁?

优化

这里仅仅是最简单的一种应用场景,如果需要上传几十M

작업은 파일을 클릭하여 선택하는 것이며, 선택한 후 파일을 지울 수 있습니다.

플러그인 소개

프로젝트에 반영된 플러그인인 angle-file-upload를 사용합니다. AngularJS 파일 업로드 기능에 대해 얼마나 알고 계시나요? 몇 분 안에 Anglejs 파일 업로드에 대해 알려주세요.플러그인은 매우 간단합니다. 플러그인이 제공하는 명령어에서 업로더 개체를 선언합니다. 이 개체는 다른 관찰자에게 어떤 작업이 수행되는지 나타냅니다. 모드.

함수 구현

명령 사용

🎜공식 웹사이트에서는 이 명령을 사용하는 다양한 방법을 제공합니다. 여기서는 단일 파일을 업로드하는 가장 간단한 방법인 Single을 선택합니다. 🎜🎜🎜AngularJS 파일 업로드 기능에 대해 얼마나 알고 계시나요? 몇 분 안에 Anglejs 파일 업로드에 대해 알려주세요.🎜 🎜rrreee🎜파일 유형의 입력, nv-file-select 명령을 사용하고 업로더 전달 >Object 명령을 매개변수로 사용합니다. 🎜🎜매우 간단한 논리입니다. 새 FileUploader 개체를 만든 다음 해당 onAfterAddingFile 메서드를 다시 작성합니다. 즉, 파일이 추가된 후 클릭하여 파일을 선택하고 file , Finish를 클릭한 후 실행되는 메서드입니다. 🎜🎜이 방법에서는 파일을 직접 업로드합니다. 🎜rrreee🎜파일 업로드를 명령어로 캡슐화한다면 위 코드는 메소드 명령어의 controller 메소드에서 실행되어야 합니다! ! ! 🎜🎜지시문의 compile, controller, link 실행에 대한 자세한 설명은 올바른 사용법을 참고하세요. Angular 지시문, 컨트롤러 및 링크에서 컴파일합니다. 🎜

원인 분석

🎜구현 시 link 함수에서 다양한 이벤트를 바인딩하기 위해 nv-file-select 지시문을 사용하는 경우가 있을 수 있습니다. 그런 다음 업로더 개체가 필요합니다. 🎜🎜그리고 link 함수에 넣으면 이 명령어의 link 함수가 nv-file-select보다 나중입니다. >link 함수가 실행되었으므로 유효하지 않습니다. 🎜

업로드

rrreee

삭제

🎜사용자가 잘못된 파일을 업로드한 경우 어떻게 해야 하나요? 파일 업로드 후 표시되는 지우기 버튼을 추가합니다. 🎜rrreee🎜그런데 여기서 문제가 있습니다. 서버에 있는 첨부파일만 삭제하는데 파일 선택 효과는 그대로 있고, 선택한 파일 이름이 여기에 계속 표시됩니다. 🎜🎜🎜AngularJS 파일 업로드 기능에 대해 얼마나 알고 계시나요? 몇 분 안에 Anglejs 파일 업로드에 대해 알려주세요.🎜 🎜🎜해결책은 으로 래핑하고 버튼 유형을 재설정으로 설정하는 것입니다. 삭제입력의 내용이 사라졌습니다. 🎜rrreeerrreee🎜 reset으로 설정하면 새로운 문제가 발생합니다. 이 명령은 form 형식으로 설정되기 때문에 reset, 나머지는 모두 지웠습니다. . 🎜

ng-form

🎜ng-form을 사용하면 문제가 해결되었습니다. 🎜🎜이것은 ng-form 지시문에 대한 공식적인 설명입니다. 🎜🎜HTML은 양식 요소의 중첩을 허용하지 않습니다. 예를 들어 하위 항목의 유효성이 검증된 경우 양식을 중첩하는 것이 유용합니다. -컨트롤 그룹을 결정해야 합니다.🎜🎜HTMLform 요소의 중첩을 허용하지 않으며, ng-form이 사용됩니다. form 중첩을 위해 하위 form 그룹을 검증해야 하는 경우. (자세한 내용을 보려면 PHP 중국어 웹사이트 angularjs 학습 매뉴얼🎜을 방문하여 학습하세요)🎜🎜 하지만 ng-formform의 기능을 구현하지 않으므로 ng-submit을 사용할 수 없습니다. 이 디자인은 합리적입니다. ng-form 제출일 수도 있는 경우 중첩된 form, 제출버튼 code>, 누가 제출해야 하나요? 🎜🎜Optimization🎜🎜이것은 가장 간단한 애플리케이션 시나리오일 뿐입니다. 수십 개의 <code>M으로 구성된 대용량 파일을 업로드해야 한다면 어떻게 될까요? 🎜🎜🎜🎜🎜🎜🎜컴퓨터 네트워크를 공부한 친구라면 이 구현을 보면 익숙하지 않나요? 이것은 다른 네트워크가 한 번에 그렇게 많은 데이터를 전달할 수 없다는 것을 발견했을 때 라우터가 수행하는 작업이 아닙니까? 컴퓨터 네트워크의 원리는 여전히 어느 정도 유용합니다. 🎜

저번에 yunzhiTrueOrFalse 필터를 디자인했을 때와 마찬가지로 데이터 구조의 본질을 이해했습니다. 데이터 구조는 실제로 데이터 "구조"입니다. yunzhiTrueOrFalse过滤器时,我明白了数据结构的本质。数据结构其实就是数据“结构”。

我们说Map是一种数据结构,但是没有HashMap我们能不能完成任务呢?

也能,两个数组,一个存key,一个存valuefor循环呗。然后Java社区发现这种的应用场景太多,用起来太麻烦,就在JDK中实现了这样的一种数据结构HashMap

Map은 데이터 구조라고 하는데, HashMap 없이도 작업을 완료할 수 있나요?

또한 두 개의 배열이 있는데, 하나는 key를 저장하고, 하나는 value를 저장하고, for는 루프를 저장합니다. 그러다가 Java 커뮤니티에서는 이런 종류의 응용 프로그램 시나리오가 너무 많고 사용하기가 너무 번거롭다는 사실을 발견하고 JDK에서 이러한 데이터 구조 <code>HashMap을 구현했습니다. >. (이것은 내가 만든 이야기입니다!)

추상화 후에는 모든 것이 더 편리해집니다. 어느 날 기존 데이터 구조가 장면의 요구를 충족할 수 없다는 것을 알게 되면 책을 열고 직접 디자인해 보세요.

이 기사는 여기서 끝납니다. 더 많은 내용을 보려면 PHP 중국어 웹사이트

angularjs 참조 매뉴얼
을 방문하세요.

🎜🎜🎜

위 내용은 AngularJS 파일 업로드 기능에 대해 얼마나 알고 계시나요? 몇 분 안에 Anglejs 파일 업로드에 대해 알려주세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Python vs. JavaScript : 학습 곡선 및 사용 편의성Python vs. JavaScript : 학습 곡선 및 사용 편의성Apr 16, 2025 am 12:12 AM

Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.

Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스Apr 15, 2025 am 12:16 AM

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

C/C에서 JavaScript까지 : 모든 것이 어떻게 작동하는지C/C에서 JavaScript까지 : 모든 것이 어떻게 작동하는지Apr 14, 2025 am 12:05 AM

C/C에서 JavaScript로 전환하려면 동적 타이핑, 쓰레기 수집 및 비동기 프로그래밍으로 적응해야합니다. 1) C/C는 수동 메모리 관리가 필요한 정적으로 입력 한 언어이며 JavaScript는 동적으로 입력하고 쓰레기 수집이 자동으로 처리됩니다. 2) C/C를 기계 코드로 컴파일 해야하는 반면 JavaScript는 해석 된 언어입니다. 3) JavaScript는 폐쇄, 프로토 타입 체인 및 약속과 같은 개념을 소개하여 유연성과 비동기 프로그래밍 기능을 향상시킵니다.

JavaScript 엔진 : 구현 비교JavaScript 엔진 : 구현 비교Apr 13, 2025 am 12:05 AM

각각의 엔진의 구현 원리 및 최적화 전략이 다르기 때문에 JavaScript 엔진은 JavaScript 코드를 구문 분석하고 실행할 때 다른 영향을 미칩니다. 1. 어휘 분석 : 소스 코드를 어휘 단위로 변환합니다. 2. 문법 분석 : 추상 구문 트리를 생성합니다. 3. 최적화 및 컴파일 : JIT 컴파일러를 통해 기계 코드를 생성합니다. 4. 실행 : 기계 코드를 실행하십시오. V8 엔진은 즉각적인 컴파일 및 숨겨진 클래스를 통해 최적화하여 Spidermonkey는 유형 추론 시스템을 사용하여 동일한 코드에서 성능이 다른 성능을 제공합니다.

브라우저 너머 : 실제 세계의 JavaScript브라우저 너머 : 실제 세계의 JavaScriptApr 12, 2025 am 12:06 AM

실제 세계에서 JavaScript의 응용 프로그램에는 서버 측 프로그래밍, 모바일 애플리케이션 개발 및 사물 인터넷 제어가 포함됩니다. 1. 서버 측 프로그래밍은 Node.js를 통해 실현되며 동시 요청 처리에 적합합니다. 2. 모바일 애플리케이션 개발은 재교육을 통해 수행되며 크로스 플랫폼 배포를 지원합니다. 3. Johnny-Five 라이브러리를 통한 IoT 장치 제어에 사용되며 하드웨어 상호 작용에 적합합니다.

Next.js (백엔드 통합)로 멀티 테넌트 SAAS 애플리케이션 구축Next.js (백엔드 통합)로 멀티 테넌트 SAAS 애플리케이션 구축Apr 11, 2025 am 08:23 AM

일상적인 기술 도구를 사용하여 기능적 다중 테넌트 SaaS 응용 프로그램 (Edtech 앱)을 구축했으며 동일한 작업을 수행 할 수 있습니다. 먼저, 다중 테넌트 SaaS 응용 프로그램은 무엇입니까? 멀티 테넌트 SAAS 응용 프로그램은 노래에서 여러 고객에게 서비스를 제공 할 수 있습니다.

Next.js (Frontend Integration)를 사용하여 멀티 테넌트 SaaS 응용 프로그램을 구축하는 방법Next.js (Frontend Integration)를 사용하여 멀티 테넌트 SaaS 응용 프로그램을 구축하는 방법Apr 11, 2025 am 08:22 AM

이 기사에서는 Contrim에 의해 확보 된 백엔드와의 프론트 엔드 통합을 보여 주며 Next.js를 사용하여 기능적인 Edtech SaaS 응용 프로그램을 구축합니다. Frontend는 UI 가시성을 제어하기 위해 사용자 권한을 가져오고 API가 역할 기반을 준수하도록합니다.

JavaScript : 웹 언어의 다양성 탐색JavaScript : 웹 언어의 다양성 탐색Apr 11, 2025 am 12:01 AM

JavaScript는 현대 웹 개발의 핵심 언어이며 다양성과 유연성에 널리 사용됩니다. 1) 프론트 엔드 개발 : DOM 운영 및 최신 프레임 워크 (예 : React, Vue.js, Angular)를 통해 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축합니다. 2) 서버 측 개발 : Node.js는 비 차단 I/O 모델을 사용하여 높은 동시성 및 실시간 응용 프로그램을 처리합니다. 3) 모바일 및 데스크탑 애플리케이션 개발 : 크로스 플랫폼 개발은 개발 효율을 향상시키기 위해 반응 및 전자를 통해 실현됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기