首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue2获取图像

Vue2获取图像
EN

Stack Overflow用户
提问于 2018-12-31 21:01:06
回答 3查看 804关注 0票数 0

我有一个从数组中获取图像的函数

代码语言:javascript
复制
onFileChange(e) {
            let files = e.target.files;
            for (let file in files) {
                this.files.push(URL.createObjectURL(files[file]));
                if (files.hasOwnProperty(file)) {
                    console.log(files[file]);
                }
}

它由以下元素触发:

代码语言:javascript
复制
<input multiple type="file" @change="onFileChange($event)"/>

此组件的数据对象是:

代码语言:javascript
复制
data() {
        return {
            files: [],
            url: null,
            uploadedFiles: []
}

当我呈现这个错误时:

app.js:1920 Uncaught :未能在‘URL’上执行'createObjectURL‘:没有找到与提供的签名匹配的函数。

我实际上是在获取文件数组。但是有了这个错误,帮助感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-31 21:08:14

我仍然不知道为什么会发生这个错误,但是我已经找到了一个解决办法,从for/in切换到常规的“无聊”for。

代码语言:javascript
复制
                for (var i = 0; i < files.length; i++) {
                var file = files[i],
                    src = (window.URL || window.webkitURL).createObjectURL(file);
                this.files.push(src);
                }

如果有一个能解释错误的答案,我会选择它作为答案,这是到目前为止找到的最好的解决方案。

票数 1
EN

Stack Overflow用户

发布于 2019-01-02 03:36:14

我想问题就出在这行this.files.push(URL.createObjectURL(files[file]));

如果是this.files.push(window.URL.createObjectURL(files[file]));的话,应该是{}.toString.apply(files[file]) === '[object Blob]'

否则,

代码语言:javascript
复制
const binaryData = [];
binaryData.push(files[file]);
window.URL.createObjectURL(new Blob(binaryData, {type: "application/zip"}))

参考文献:执行“createObjectURL”失败

票数 1
EN

Stack Overflow用户

发布于 2018-12-31 23:44:46

我认为你的问题不是forfor...in,而是window.URL

在你使用这个之后:

代码语言:javascript
复制
(window.URL || window.webkitURL).createObjectURL

而不是这个(URL => window.URL):

代码语言:javascript
复制
URL.createObjectURL

它对你有效,这是一个浏览器兼容性问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53991390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档