> 웹 프론트엔드 > JS 튜토리얼 > H5에서 이미지 업로드 미리보기 구성요소를 만드는 방법

H5에서 이미지 업로드 미리보기 구성요소를 만드는 방법

php中世界最好的语言
풀어 주다: 2018-03-10 16:19:42
원래의
2059명이 탐색했습니다.

이번에는 H5에서 이미지 업로드 미리보기 컴포넌트를 만드는 방법을 보여드리겠습니다. H5에서 이미지 업로드 미리보기 컴포넌트를 만들 때 주의사항은 무엇인가요?

제 개발 환경은 Windows 10이고 테스트 브라우저는 Chrome과 Firefox입니다
호환되지 않는 브라우저가 나타나면 브라우저를 업그레이드하거나 Google it(~ ̄▽ ̄)을 사용해 보세요~

1. files

기본적으로 은 다중 속성을 추가한 후 다중 파일 선택이 허용됩니다

<!DOCTYPE html><html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <label>单选:<input type="file"/></label>
        <label>多选:<input type="file" multiple="multiple"/></label>
    </body></html>
로그인 후 복사

2. 브라우저 콘솔을 열고 선택하세요. 콘솔 변경 사항을 볼 수 있는 파일

<!DOCTYPE html><html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body> 
        <label>可以这样:<input type="file" multiple="multiple" onchange="getFilesInfo(this.files)"/></label>
        <script>
            function getFilesInfo(f){                console.log(f);
            }        </script>
        <label>也可以这样:<input id="files" type="file" multiple="multiple" /></label>
        <script>
            function getFilesInfo2(evt) {                var files = evt.target.files; 
                console.log(files);
            }            document.getElementById(&#39;files&#39;).addEventListener(&#39;change&#39;, getFilesInfo2, false);        </script>
        <label>还可以这样:<input id="fileInput" type="file" multiple="multiple" onchange="getFilesInfo3()"/></label>
        <script>
            function getFilesInfo3(){                var files=document.getElementById("fileInput").files;                console.log(files);
            }        </script>
    </body></html>
로그인 후 복사

3. 일반적으로 사용되는 속성

두 번째 단계에서는 콘솔에서 파일을 확장하여 어떤 공통 속성이 있는지 살펴보겠습니다.

일반적으로 사용되는 속성 설명:

이름 -파일 이름

크기-크기
유형-파일 유형
lastModified-최근 수정 날짜

자, 페이지에 몇 가지 정보를 출력해 보겠습니다

<!doctype html><html>
    <head>
        <meta charset="UTF-8" />
        <title>Document</title>
    </head>
    <body>
        <input type="file" id="files"  multiple />
        <output id="list"></output>
        <script>
            function handleFileSelect(evt) {                var files = evt.target.files; //如果你是单选那就直接evt.target.files[0]
                var output = []; 
                for(var i = 0, f; f = files[i]; i++) {
                    output.push(&#39;<li><strong>&#39;, f.name, &#39;</strong> (&#39;, f.type || &#39;n/a&#39;, &#39;) - &#39;,
                        f.size, &#39; bytes, last modified: &#39;,
                        f.lastModifiedDate.toLocaleDateString(), &#39;</li>&#39;);
                }                document.getElementById(&#39;list&#39;).innerHTML = &#39;<ul>&#39; + output.join(&#39;&#39;) + &#39;</ul>&#39;;
            } 
            document.getElementById(&#39;files&#39;).addEventListener(&#39;change&#39;, handleFileSelect, false);        </script>
    </body> </html>
로그인 후 복사

4. 파일 크기 및 파일 형식을 제한하세요

미리보기 업로드 시 이미지는 파일을 업로드해야 합니다. 크기와 형식으로 필터링하세요

지금은 jpg와 png만 업로드할 수 있고 파일 크기가 2mb 이내라고 가정해 보겠습니다. 파일 정보를 모른다면 매우 간단합니다. 필터링하려는 파일 형식을 콘솔에서 입력한 다음 복사하여 붙여넣을 수 있습니다

물론 입력 태그에 accept="image/*"를 설정하여 이미지 파일만 입력하도록 허용할 수도 있습니다

<!DOCTYPE html><html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h3>过滤出图片</h3>
        <input type="file" id="files"   multiple accept="image/*"  />
        <output id="list"></output> 
        <script>
            function handleFileSelect(evt) {                var files = evt.target.files;                var output = [];                for(var i = 0, f; f = files[i]; i++) {                    if(f.size<1024*1024*2&&(f.type=="image/png"||f.type=="image/jpeg")){//<===这里
                        output.push(&#39;<li><strong>&#39;, f.name, &#39;</strong> (&#39;, f.type || &#39;n/a&#39;, &#39;) - &#39;,
                        f.size, &#39; bytes, last modified: &#39;,
                        f.lastModifiedDate.toLocaleDateString(), &#39;</li>&#39;);
                    }
                }                document.getElementById(&#39;list&#39;).innerHTML = &#39;<ul>&#39; + output.join(&#39;&#39;) + &#39;</ul>&#39;;
            } 
            document.getElementById(&#39;files&#39;).addEventListener(&#39;change&#39;, handleFileSelect, false);        </script>
    </body> </html>
로그인 후 복사

5. 미리보기 예시

img 태그를 동적으로 생성하고 img 태그의 src 속성을 바인딩하여 ObjectURL 구현 미리보기

Example

<!DOCTYPE html><html>
   <head>
       <meta charset="UTF-8">
       <title></title>
   </head>
   <body>
       <h3>预览</h3>
       <input type="file" id="files"  multiple accept="image/*" />
       <output id="list"></output>  
       <script>
           function handleFileSelect(evt) {               var files = evt.target.files;               var output = [];               for(var i = 0, f; f = files[i]; i++) {                   if(f.size<1024*1024*2&&(f.type=="image/png"||f.type=="image/jpeg")){
                       output.push("![]("+URL.createObjectURL(f)+")"); 
                   }
               }               document.getElementById(&#39;list&#39;).innerHTML = &#39;<ul>&#39; + output.join(&#39;&#39;) + &#39;</ul>&#39;;
           }           document.getElementById(&#39;files&#39;).addEventListener(&#39;change&#39;, handleFileSelect, false);       </script>
   </body></html>
로그인 후 복사

6. 단일 이미지 업로드 미리보기 예시

Example

<!DOCTYPE html><html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h3>简单预览示例</h3>
        <label id="fileBox" style="border: 1px #ccc solid;display:block;width: 100px;height:100px;background-clip:border-box;background-origin:padding-box;background-size:cover">
            <input type="file"  hidden="hidden" style="display: none;" onchange="fileSelect(this.files)"/>
         </label>
        <script>
            function fileSelect(f) { 
                if(!f){                    return;
                }  
                f=f[0];                if(f.size<1024*1024*2&&(f.type=="image/png"||f.type=="image/jpeg")){                    document.getElementById(&#39;fileBox&#39;).style.backgroundImage="url(" + URL.createObjectURL(f)+ ")";
                } 
                
            }         </script>
    </body> </html>
로그인 후 복사
이 방법을 마스터하신 것 같습니다. 이 기사의 사례를 읽은 후 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

관련 읽기:

s-xlsx를 사용하여 Excel 파일을 가져오고 내보내는 방법


JavaScript를 사용하여 텍스트 데이터를 저장하는 방법

jQuery를 사용한 파일 업로드 확장


위 내용은 H5에서 이미지 업로드 미리보기 구성요소를 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿