js多图片上传--一次性上传多张

适用各种版本的多图片上传,如果ie上测试有问题那就可能是ie设置有问题

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head lang="en">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
        *{margin: 0px;padding: 0px;}
        .a-upload {
            float: left;
            padding: 4px 10px;
            height: 20px;
            line-height: 20px;
            position: relative;
            cursor: pointer;
            color: white;
            background: #00b7ee;
            border: 1px solid #ddd;
            border-radius: 4px;
            overflow: hidden;
            display: inline-block;
            *display: inline;
            margin: 10px;
            *zoom: 1;
        text-decoration: none;
        }
        .a-upload  input {
            position: absolute;
            font-size: 100px;
            right: 0;
            top: 0;
            opacity: 0;
            filter: alpha(opacity=0);
            cursor: pointer
        }
        .a-upload:hover {
            color: white;
            background: #00b7ee;
            border-color: #ccc;
            text-decoration: none
        }
    </style>
</head>
<body>
<div style="margin :0px auto; width:990px;float: left;">
    <a href="javascript:;" class="a-upload">
        <input type="file" name="file" id="doc" multiple="multiple" οnchange="javascript:setImagePreviews();" accept="image/*" />点击这里上传文件
    </a>
    <div id="dd" style=" width:990px;float: left;"></div>
</div>
</body>
<script type="text/javascript">
//下面用于多图片上传预览功能
function setImagePreviews(avalue) {
    var docObj = document.getElementById("doc");
    var dd = document.getElementById("dd");
    dd.innerHTML = "";
    var fileList = docObj.files;
    for (var i = 0; i < fileList.length; i++) {
        dd.innerHTML += "<div style='float: left;margin-top: 10px;' > <img id='img" + i + "'  /> </div>";
        var imgObjPreview = document.getElementById("img"+i);
        if (docObj.files && docObj.files[i]) {
        //火狐下,直接设img属性
        // imgObjPreview.style.display = 'block';
            imgObjPreview.style.width = '160px';
            imgObjPreview.style.height = '130px';
            imgObjPreview.style.margin = '5px';
            imgObjPreview.style.borderRadius = '5px';
                //imgObjPreview.src = docObj.files[0].getAsDataURL();
                //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式
            imgObjPreview.src = window.URL.createObjectURL(docObj.files[i]);
        }
        else {
               //IE下,使用滤镜
            docObj.select();
            var imgSrc = document.selection.createRange().text;
            var localImagId = document.getElementById("img" + i);
                //必须设置初始大小
            localImagId.style.width = "160px";
            localImagId.style.height = "130px";
            imgObjPreview.style.margin = '5px';
            imgObjPreview.style.borderRadius = '5px';
                //图片异常的捕捉,防止用户修改后缀来伪造图片
            try {
                localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
                localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
            }
            catch (e) {
                alert("您上传的图片格式不正确,请重新选择!");
                return false;
            }
            imgObjPreview.style.display = 'none';
            document.selection.empty();
        }
    }
        return true;

}
</script>

</html>
  


实现样式为:


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用自定义上传方式进行多张图片一次性上传,并获取后端返回值的代码: HTML: ```html <el-upload class="upload-demo" action="" :on-change="handleChange" :http-request="customUpload" :show-file-list="false" :multiple="true" > <el-button size="small" type="primary">点击上传</el-button> </el-upload> ``` JavaScript: ```js methods: { handleChange(fileList) { console.log(fileList); }, customUpload(file) { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); const formData = new FormData(); formData.append('file', file); xhr.open('POST', '/api/upload'); xhr.onload = () => { if (xhr.status === 200) { resolve(JSON.parse(xhr.responseText)); } else { reject(xhr.statusText); } }; xhr.onerror = () => { reject(xhr.statusText); }; xhr.send(formData); }); } } ``` 在 `el-upload` 组件中,我们设置 `:http-request` 属性为自定义的上传函数 `customUpload`。在 `customUpload` 函数中,我们使用 `XMLHttpRequest` 发起一个 POST 请求,并将文件添加到 `FormData` 中。最后返回一个 Promise,如果上传成功则调用 `resolve` 并传递后端返回的数据,否则调用 `reject` 并传递错误信息。 在 `handleChange` 方法中,我们可以通过 `fileList` 参数获取到上传成功的文件列表。如果需要获取每个文件的后端返回值,可以在 `customUpload` 函数中将上传的文件名、路径等信息一并返回,然后在 `handleChange` 方法中处理即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值