如何使用输入上传图像,然后使用img标签呈现它的视图?

时间:2015-03-13 23:33:46

标签: javascript html angularjs image

我需要能够上传图像并将图像返回到屏幕,以便不使用输出标签查看,而是使用带有src元素的img标签。在我看过的其他教程中,其中一件事就是#sign作为src元素的占位符。我需要更多细节来实现它的这一部分。我从解决方案中引用了一个我无法实现的类似问题:HTML input type=file, get the image before submitting the form

我使用angular并且我不了解jQuery,所以我更喜欢避免使用jQuery解释。我使用以下代码上传和查看图片(如果下面的代码包含jQuery,我不会知道它,因为我只了解其中的一些;我找到了一个库,我和#39;我一直想弄清楚):

HTML:

<input type="file" id="files" name="files[]" file-model="myFile"/>
<output id="list" class="resize-image" alt="Image"></output>

Javacript:

   var handleFileSelect = function (evt) {//already set up for multiple files; not what i want to do.
            var files = evt.target.files; // FileList object

            // Loop through the FileList and render image files as thumbnails.
            for (var i = 0, f; f = files[i]; i++) {

                // Only process image files.
                if (!f.type.match('image.*')) {
                    continue;
                }

                var reader = new FileReader();

                // Closure to capture the file information.
                reader.onload = (function(theFile) {
                    return function(e) {
                        // Render thumbnail.
                        var span = document.createElement('span');
                        span.innerHTML = ['<img class="thumb" src="', e.target.result,
                            '" title="', escape(theFile.name), '"/>'].join('');
                        document.getElementById('list').insertBefore(span, null);
                    };
                })(f);

                // Read in the image file as a data URL.
                reader.readAsDataURL(f);
            }
        }

        document.getElementById('files').addEventListener('change', handleFileSelect, false);

长话短说,我想允许用户从桌面上传文件,查看上传的文件并裁剪图像以符合我的规格。我已经看过很多这样的库,但很多人在演示中都有错误,如果没有在我的机器上。其他人遗漏了上述过程的一部分,我无法弥合差距。通过输入上传图像并将其作为带有&#34; src&#34;的图像显示在屏幕上的问题。似乎是这个过程中的第一个绊脚石。

2 个答案:

答案 0 :(得分:1)

要上传文件但保留在同一页面上,您正在查看AJAX。

您可以手动编码:(与您相关的示例)

AJAX call returns status 200 but no content

或使用插件。我在无数项目中使用过这个:

http://hayageek.com/docs/jquery-upload-file.php


有关AJAX如何工作的一些简单示例(jQuery示例,但原理相同 - 代码更容易理解):

A simple example

More complicated example

Populate dropdown 2 based on selection in dropdown 1


有关详情,请在XMLHttpRequest

上搜索Google

为了快速学习jQuery,这里有很棒的(免费)视频教程:

9 ten-minute videos

200 ten-minute videos

答案 1 :(得分:1)

这里有一个角度指令:http://ngmodules.org/modules/angular-file-upload可以处理文件上传。

它将为您提供文件路径作为字符串,您可以保存并绑定到图像标记的ng-src属性。您可以使用ng-show根据绑定到ng-src属性的变量值隐藏/显示图像。

确保使用ng-src,而不是src,否则您将无法正常使用绑定。

https://docs.angularjs.org/api/ng/directive/ngSrc