전에 미리 보기 이미지의 업로드됨

I want to be 미리보려면 수 있는 파일 (이미지) 는 우선 업로드됨. 미리 보기 이미지의 업로드입니다 사용하지 않고 모든 브라우저에서 Ajax 작업을 실행해야 합니다.

How can I do this?

질문에 대한 의견 (6)
해결책

아래의 예제 코드를 살펴 보시기 바랍니다.

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

function readURL(input) {
  if (input.files && input.files[0]) {
    var reader = new FileReader();

    reader.onload = function(e) {
      $('#blah').attr('src', e.target.result);
    }

    reader.readAsDataURL(input.files[0]);
  }
}

$("#imgInp").change(function() {
  readURL(this);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

  <input type='file' id="imgInp" />
  ![your image](#)

끝 - &lt 스니핏 >;!

또한 [종료기 이 샘플 여기서요] (http://jsfiddle.net/LvsYc/).

해설 (13)

몇 가지 방법으로 이 작업을 수행할 수 있습니다. 사용할 수 있는 가장 효율적인 방법은 약간만이라도 [로레비크리트로비치우를 ()] [1] 에 파일 에서 [&amp input&amp, gt, lt;;] [5]. [이마조지스크] [3] 이 url 을 전달하십시오 지시할 수 있는 브라우저 로드하기에 제공된 이미지.

39 의 here& 예:

<! - begin 스니핏: js 숨기십시오: &gt 거짓값 -;

<input type="file" accept="image/*" onchange="loadFile(event)">

<script>
  var loadFile = function(event) {
    var output = document.getElementById('output');
    output.src = URL.createObjectURL(event.target.files[0]);
  };
</script>

끝 - &lt 스니핏 >;!

[필레이더그리드라다토를 ()] 을 사용할 수도 있습니다. [4] 에서 파일 구문 분석을 위해 &amp input&amp, gt, lt;;). 이 문자열으로 base64 이미지가 포함된 메모리에 불러올 것으로 보인다.

<! - begin 스니핏: js 숨기십시오: &gt 거짓값 -;

<input type="file" accept="image/*" onchange="loadFile(event)">

<script>
  var loadFile = function(event) {
    var reader = new FileReader();
    reader.onload = function(){
      var output = document.getElementById('output');
      output.src = reader.result;
    };
    reader.readAsDataURL(event.target.files[0]);
  };
</script>

끝 - &lt 스니핏 >;!

[1]: http://www.javascripture.com/URL # 크레이트로비치우를

[3]: http://www.javascripture.com/HTMLImageElement # src [4]: http://www.javascripture.com/FileReader # 리다다토를 [5]: http://www.javascripture.com/HTMLInputElement 파일을 #

해설 (2)

한 줄 광고문 해결책:

다음 코드는 url 을 사용하는 것보다 훨씬 더 큰 이미지를 볼 수 있는 효율적인 객체에는 uirl 데이터 (data url 이 거대한 구체화하십시오 모두를 포함하는 파일 데이터 반면, 짧은 URL 문자열 객체를 참조하고, 단순히 파일 데이터 인메모리를):

<! - begin 스니핏: js 숨기십시오: &gt 거짓값 -;



<input type="file" 
    onchange="document.getElementById('blah').src = window.URL.createObjectURL(this.files[0])">

끝 - &lt 스니핏 >;!

생성할지 uirl 같은 것입니다.

blob:http%3A//localhost/7514bc74-65d4-4cf0-a0df-3de016824345
해설 (5)

더불어 이 답을 리스타트 작동됨 &quot standard"; ff, 크롬 브라우저 같은. Ie 존재하지만 위한 솔루션 다르게 보입니다. 여기 설명을 크로스 브라우저 솔루션:

Img 는 표준 HTML 의 두 가지 요소, IE 의 브라우저 및 div 미리봅니다 필요하다.

HTML:



<div id="preview_ie"></div>

다음 IE 의 CSS 저희에게는힘과 대체하십시오 특정 것.

CSS.

#preview_ie {
  FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)
}  

우리는 이 ie 특정 표준판과 포함시키십시오 html 의 javascript:


<script type="text/javascript">
  {% include "pic_preview.js" %}
</script>  
해설 (0)

39 라는 질문에 나는 @Ivan& 편집됩니다 표시하십시오 미리봅니다 &quot 셨노라 어떠한 Available"; 이미지 있지 않은 경우 이미지:

function readURL(input) {
    var url = input.value;
    var ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase();
    if (input.files && input.files[0]&& (ext == "gif" || ext == "png" || ext == "jpeg" || ext == "jpg")) {
        var reader = new FileReader();

        reader.onload = function (e) {
            $('.imagepreview').attr('src', e.target.result);
        }

        reader.readAsDataURL(input.files[0]);
    }else{
         $('.imagepreview').attr('src', '/assets/no_preview.png');
    }
}
해설 (0)

, 버전을 기반으로 한 여러 개의 파일을 here& # 39 의 이반 Baev& # 39 의 그 답이 있다.

  • HTML *
<input type="file" multiple id="gallery-photo-add">
<div class="gallery"></div>
  • 자바스크립트 / jQuery *
$(function() {
    // Multiple images preview in browser
    var imagesPreview = function(input, placeToInsertImagePreview) {

        if (input.files) {
            var filesAmount = input.files.length;

            for (i = 0; i < filesAmount; i++) {
                var reader = new FileReader();

                reader.onload = function(event) {
                    $($.parseHTML('')).attr('src', event.target.result).appendTo(placeToInsertImagePreview);
                }

                reader.readAsDataURL(input.files[i]);
            }
        }

    };

    $('#gallery-photo-add').on('change', function() {
        imagesPreview(this, 'div.gallery');
    });
});

Jquery 사용에 도움을 필요로 하는 자파르세사믈, $1.8 인해 XSS 완화.

이렇게 하면 바로 사용할 수 있는 유일한 의존성 작동합니까 you need is 포함한다.

해설 (0)

예. 가능합니다.

Html

<input type="file" accept="image/*"  onchange="showMyImage(this)" />
 <br/>

JS

 function showMyImage(fileInput) {
        var files = fileInput.files;
        for (var i = 0; i < files.length; i++) {           
            var file = files[i];
            var imageType = /image.*/;     
            if (!file.type.match(imageType)) {
                continue;
            }           
            var img=document.getElementById("thumbnil");            
            img.file = file;    
            var reader = new FileReader();
            reader.onload = (function(aImg) { 
                return function(e) { 
                    aImg.src = e.target.result; 
                }; 
            })(img);
            reader.readAsDataURL(file);
        }    
    }

[라이브 데모를] [1] 여기에서 얻을 수 있습니다.

해설 (0)

깨끗하고 간단한 [ 이스피들 ] [1]

이 때 유용할 것이라고 다운로드하려는 이벤트를 통해 간접적으로 트리거됨 div 또는 버튼를.



<input style="display:none" id="input-image-hidden" onchange="document.getElementById('image-preview').src = window.URL.createObjectURL(this.files[0])" type="file" accept="image/jpeg, image/png">

UPLOAD IMAGE

<script type="text/javascript">
function HandleBrowseClick(hidden_input_image)
{
    var fileinputElement = document.getElementById(hidden_input_image);
    fileinputElement.click();
}     
</script>
해설 (1)

예, HTML5 JavaScript 를 사용하여 여러 개의 이미지 (jQuery)

  • JavaScript (jQuery) *
function readURL(input) {
     for(var i =0; i< input.files.length; i++){
         if (input.files[i]) {
            var reader = new FileReader();

            reader.onload = function (e) {
               var img = $('');
               img.attr('src', e.target.result);
               img.appendTo('#form1');  
            }
            reader.readAsDataURL(input.files[i]);
           }
        }
    }

    $("#imgUpload").change(function(){
        readURL(this);
    });
}
  • 수정표시 (HTML) *

    <input type="file" id="imgUpload" multiple/>
해설 (0)

다음은 apc® 코드입니다.

<input type='file' onchange="readURL(this);" /> 

'javascript'

 function readURL(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();

            reader.onload = function (e) {
                $('#ShowImage')
                    .attr('src', e.target.result)
                    .width(150)
                    .height(200);
            };

            reader.readAsDataURL(input.files[0]);
        }
    }
해설 (0)

어떻게 만드는 것에 대한 기능을 제공하는 파일 및 화재 로드되는지 사용자 정의 이벤트. 그럼 리스너에 부착합니다 다운스트림에서 입력입니다. 이 방식으로 파일을 사용하여 보다 유연하게 아니라 미리 볼 수 있도록 지원한다.

/**
 * @param {domElement} input - The input element
 * @param {string} typeData - The type of data to be return in the event object. 
 */
function loadFileFromInput(input,typeData) {
    var reader,
        fileLoadedEvent,
        files = input.files;

    if (files && files[0]) {
        reader = new FileReader();

        reader.onload = function (e) {
            fileLoadedEvent = new CustomEvent('fileLoaded',{
                detail:{
                    data:reader.result,
                    file:files[0]  
                },
                bubbles:true,
                cancelable:true
            });
            input.dispatchEvent(fileLoadedEvent);
        }
        switch(typeData) {
            case 'arraybuffer':
                reader.readAsArrayBuffer(files[0]);
                break;
            case 'dataurl':
                reader.readAsDataURL(files[0]);
                break;
            case 'binarystring':
                reader.readAsBinaryString(files[0]);
                break;
            case 'text':
                reader.readAsText(files[0]);
                break;
        }
    }
}
function fileHandler (e) {
    var data = e.detail.data,
        fileInfo = e.detail.file;

    img.src = data;
}
var input = document.getElementById('inputId'),
    img = document.getElementById('imgId');

input.onchange = function (e) {
    loadFileFromInput(e.target,'dataurl');
};

input.addEventListener('fileLoaded',fileHandler)

아마 제가 코드 isn& # 39, t 양호한 상태로 일부 사용자 로 하지만 난 그렇게 생각해 요점이지 얻을 수 있다. [예] [1] 여기서 확인할 수 있습니다

해설 (0)

이 시도하시겠습니까

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

window.onload = function() {
  if (window.File && window.FileList && window.FileReader) {
    var filesInput = document.getElementById("uploadImage");
    filesInput.addEventListener("change", function(event) {
      var files = event.target.files;
      var output = document.getElementById("result");
      for (var i = 0; i < files.length; i++) {
        var file = files[i];
        if (!file.type.match('image'))
          continue;
        var picReader = new FileReader();
        picReader.addEventListener("load", function(event) {
          var picFile = event.target;
          var div = document.createElement("div");
          div.innerHTML = "";
          output.insertBefore(div, null);
        });        
        picReader.readAsDataURL(file);
      }

    });
  }
}
<input type="file" id="uploadImage" name="termek_file" class="file_input" multiple/>
<div id="result" class="uploadPreview">

끝 - &lt 스니핏 >;!

해설 (0)

이 솔루션은 어때?

데이터 속성용 추가하기만 &quot 데이터 유형 = editable"; 충족되었으며 이미지 태그 다음과 같습니다.

그리고 프로젝트에 스크립트입니다 끄기도구 물론이겠지.

function init() {
    $("img[data-type=editable]").each(function (i, e) {
        var _inputFile = $('<input/>')
            .attr('type', 'file')
            .attr('hidden', 'hidden')
            .attr('onchange', 'readImage()')
            .attr('data-image-placeholder', e.id);

        $(e.parentElement).append(_inputFile);

        $(e).on("click", _inputFile, triggerClick);
    });
}

function triggerClick(e) {
    e.data.click();
}

Element.prototype.readImage = function () {
    var _inputFile = this;
    if (_inputFile && _inputFile.files && _inputFile.files[0]) {
        var _fileReader = new FileReader();
        _fileReader.onload = function (e) {
            var _imagePlaceholder = _inputFile.attributes.getNamedItem("data-image-placeholder").value;
            var _img = $("#" + _imagePlaceholder);
            _img.attr("src", e.target.result);
        };
        _fileReader.readAsDataURL(_inputFile.files[0]);
    }
};

// 
// IIFE - Immediately Invoked Function Expression
// https://stackoverflow.com/questions/18307078/jquery-best-practises-in-case-of-document-ready
(

function (yourcode) {
    "use strict";
    // The global jQuery object is passed as a parameter
    yourcode(window.jQuery, window, document);
}(

function ($, window, document) {
    "use strict";
    // The $ is now locally scoped 
    $(function () {
        // The DOM is ready!
        init();
    });

    // The rest of your code goes here!
}));

[지켜보리니 데모 이스피들] [1]

해설 (0)

내가 IE 에서 생성할 수 있는 플러그인을 예증의표적으로 미리봅니다 7+ 효과 덕분에 인터넷 않았지만, 몇 가지 제한이 있다. I put it 를 깃허브 페이지 맞도록 쉽게 이해했소

<! - begin 스니핏: js 숨기십시오: &gt 거짓값 -;

$(function () {
        $("input[name=file1]").previewimage({
            div: ".preview",
            imgwidth: 180,
            imgheight: 120
        });
        $("input[name=file2]").previewimage({
            div: ".preview2",
            imgwidth: 90,
            imgheight: 90
        });
    });
.preview > div {
  display: inline-block;
  text-align:center;
}

.preview2 > div {
  display: inline-block; 
  text-align:center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://rawgit.com/andrewng330/PreviewImage/master/preview.image.min.js"></script>
    Preview
    <div class="preview"></div>
    Preview2
    <div class="preview2"></div>


        <input type="file" name="file1">
        <input type="file" name="file2">
        <input type="submit">

끝 - &lt 스니핏 >;!

해설 (0)

여러 인스턴스용으로 이미지 업로드 (수정) 를 @IvanBaev& # 39 의 솔루션)

function readURL(input) {
    if (input.files && input.files[0]) {
        var i;
        for (i = 0; i < input.files.length; ++i) {
          var reader = new FileReader();
          reader.onload = function (e) {
              $('#form1').append('');
          }
          reader.readAsDataURL(input.files[i]);
        }
    }
}

http://jsfiddle.net/LvsYc/12330/

따라서 누군가가 바란다.

해설 (0)

div class = &quot 양식 그룹 col-md-3&quot &gt <;;; class = &quot &lt, 라벨, 기본 Iamge&lt /label&gt &gt control-label";;;

                @Html.TextBoxFor(x => x.productModels.DefaultImage, new {@type = "file", @class = "form-control", onchange = "openFile(event)", @name = "DefaultImage", @id = "DefaultImage" })
                @Html.ValidationMessageFor(model => model.productModels.DefaultImage, "", new { @class = "text-danger" })

            </div>

 <script>
    var openFile = function (event) {
        var input = event.target;

        var reader = new FileReader();
        reader.onload = function () {
            var dataURL = reader.result;
            var output = document.getElementById('DefaultImagePreview');
            output.src = dataURL;
        };
        reader.readAsDataURL(input.files[0]);
    };
</script>
해설 (0)

시간이 있는 파일의 경우 사용 중인 소품, 사용할 수 있습니다.

"'이스스 {프로프스트발루 instanceof 파일 &amp &; ( &lt, img src = {} /&gt 로레비크리트로비치우를 (프로프스트발루). )} "'

해설 (0)

39 의 it& 내 코드. 지원부에서는 、 、 、 、 크롬 IE 파이어폭스 오페라 11+ Maxthon3 17+ [6-9]

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -; <! - 언어: &gt html 로 -; &lt 입력입니다 유형 = &quot file";; id = &quot netBarBig"; (이) = &quot 론창레 장제피리 "; /&gt. img src = &quot &quot <;; id = &quot imagePreview"; style = &quot 너버 120px 높이 80px ";;; alt = &quot &quot />;;

function previewImage(fileObj, imgPreviewId) {
    var allowExtention = ".jpg,.bmp,.gif,.png";  //allowed to upload file type
    document.getElementById("hfAllowPicSuffix").value;
    var extention = fileObj.value.substring(fileObj.value.lastIndexOf(".") + 1).toLowerCase();
    var browserVersion = window.navigator.userAgent.toUpperCase();
    if (allowExtention.indexOf(extention) > -1) {
        if (fileObj.files) {
            if (window.FileReader) {
                var reader = new FileReader();
                reader.onload = function (e) {
                    document.getElementById(imgPreviewId).setAttribute("src", e.target.result);
                };
                reader.readAsDataURL(fileObj.files[0]);
            } else if (browserVersion.indexOf("SAFARI") > -1) {
                alert("don't support  Safari6.0 below broswer");
            }
        } else if (browserVersion.indexOf("MSIE") > -1) {
            if (browserVersion.indexOf("MSIE 6") > -1) {//ie6
                document.getElementById(imgPreviewId).setAttribute("src", fileObj.value);
            } else {//ie[7-9]
                fileObj.select();
                fileObj.blur(); 
                var newPreview = document.getElementById(imgPreviewId);

                newPreview.style.border = "solid 1px #eeeeee";
                newPreview.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='" + document.selection.createRange().text + "')";
                newPreview.style.display = "block";

            }
        } else if (browserVersion.indexOf("FIREFOX") > -1) {//firefox
            var firefoxVersion = parseFloat(browserVersion.toLowerCase().match(/firefox\/([\d.]+)/)[1]);
            if (firefoxVersion < 7) {//firefox7 below
                document.getElementById(imgPreviewId).setAttribute("src", fileObj.files[0].getAsDataURL());
            } else {//firefox7.0+ 
                document.getElementById(imgPreviewId).setAttribute("src", window.URL.createObjectURL(fileObj.files[0]));
            }
        } else {
            document.getElementById(imgPreviewId).setAttribute("src", fileObj.value);
        }
    } else {
        alert("only support" + allowExtention + "suffix");
        fileObj.value = ""; //clear Selected file
        if (browserVersion.indexOf("MSIE") > -1) {
            fileObj.select();
            document.selection.clear();
        }

    }
}
function changeFile(elem) {
    //file object , preview img tag id
    previewImage(elem,'imagePreview')
}

끝 - &lt 스니핏 >;!

해설 (0)

39 의 you& 반응할 경우 here& 솔루션을 사용하여 # 39, re:

import * as React from 'react'
import { useDropzone } from 'react-dropzone'

function imageDropper() {
  const [imageUrl, setImageUrl] = React.useState()
  const [imageFile, setImageFile] = React.useState()

  const onDrop = React.useCallback(
    acceptedFiles => {
      const file = acceptedFiles[0]
      setImageFile(file)

      // convert file to data: url
      const reader = new FileReader()
      reader.addEventListener('load', () => setImageUrl(String(reader.result)), false)
      reader.readAsDataURL(file)
    },
    [setImageFile, setImageUrl]
  )
  const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop })

  return (
    <div>
      <div {...getRootProps()}>
        {imageFile ? imageFile.name : ''}
        {isDragActive ? <p>Drop files here...</p> : <p>Select image file...</p>}
        <input {...getInputProps()} />
      </div>
      {imageUrl && (
        <div>
          Your image: 
        </div>
      )}
    </div>
  )
}
해설 (0)

&gt. 미리 보기 전에 여러 이미지를 사용하는 것은 업로드됨 jQuery / javascript?

  • 이렇게 하면 한 번에 여러 개의 이미지 파일을 컴포지션으로 미리봅니다 축소판에 *

  • Html *

"' id = &quot ImageMedias&quot 입력입니다 <;; 여러 = &quot multiple"; name = &quot ImageMedias"; type = &quot file"; = &quot 동의하십시오 .j피프, .jpg, .jpeg, .png, .gif"; class = &quot custom-file-input"; 값 = &quot &quot >;; div id = &quot <;;;; divImageMediaPreview&quot &gt &lt /div&gt. "'

  • 스크립트입니다 *

"' $ (&quot, # ImageMedias") 이창레 (함수 () { if (메리 페로프 (필레이더)! = undefined&quot ";) { var 데브프레비예프 = $ (# divImageMediaPreview&quot ";). 데브프레비에우스타믈 (&quot ";). $ ($ (이) [0] 스피리스) 그레이크 (함수 () { var 파일 = $ (이); var 판독기에서 = new 필레이더 (); 에이드리언로이드 = 함수 (e) { var img = $ (,, img /&gt &quot &lt "). 임g. 타르 (&quot style&quot &quot, 가로:;; 150px. 높이 100px. 패딩: 10px"). 임g. 타르 (src&quot 에벌린다지t.레술트 ";). 데브프레비에웨인라펜드 (img); } 레이더그리드라다토를 (파일 [0]). }). } else { 경고 (&quot, 이 HTML5 를 지원하지 않는 브라우저를 FileReader."). } }). "'

Apc® 데모 고데펜

[Apc® 데모 이스피들] [1]

이를 통해 됐으면 좋겠다 "고 말했다.

해설 (0)