问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用js脚本,怎么实现弹出选择图片的对话框,并将文件上传到服务器

发布网友 发布时间:2022-04-24 06:18

我来回答

5个回答

懂视网 时间:2022-04-24 10:39

本文这里给大家说个用javascript实现的很实用的功能,是在上传附件的时候,可以动态地添加和删除文件选择框,然后一次性上传。

从理论上看,实现起来比较容易,但实际工作的时候还是遇到两个难点,这些难点归结起来都是一个原因造成的,那就是浏览器的兼容性。在脚本中要用到两个函数:insertAdjacentHTML和removeChild,而恰好这两个函数在Firefox下都不能正常使用。几乎花费了一天的时候,在网上搜索着解决的方法,还好被找到了,也让我大松一口气。

具体两个函数是这样的:

<script type="text/javascript">
 //删除文件选择框
 function removeFile(id) {
 var new_tr = id.parentNode;
 try {
 //new_tr.removeNode(true);
 // just ie , not w3c;
 
 // other idea
 var tmp = new_tr.parentNode;
 // 为了在ie和firefox下都能正常使用,就要用另一个方法代替,最取上一层的父结点,然后remove.
 tmp.removeChild(new_tr);
 
 } catch(e) {}
 }
 
 //添加文件选择框
 function addFile(id)
 {
 var str = '<div><input type="file" runat="server" name="file" onKeyDown="this.blur();" oncontextmenu="return false" /><input type="button" value="删除" style="height:22px;" onclick="removeFile(this)" /></div>'
 insertHtml("beforeend",document.getElementById(id),str);
 }
</script>

页面上这样引用:

<div>
 <input type="button" value="添加附件(Add)" onclick="addFile('myfile')">
 </div>
 <div id="myfile">
</div>

在addFile函数中引用了另一个函数:insertHtml,这个函数主要是针对insertAdjacentHTML在firefox下无效的情况重写的,具体可以通过搜索insertAdjacentHTML找到。

PS:清除file框的内容

<input type=file name=ttt> 
 <input type=button onclick="ttt.select();document.execCommand('Delete');" value=清除file框的内容>

第二个案例

文件上传,删除效果图:

刚开始:

201611011003251.png

点击按钮“选择更多后”,可以添加很多选择文件:

201611011003251.png

点击按钮“删除”后:

201611011003251.png

实现代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>选择文件</title>
<style type="text/css">
*{
margin:0px;
padding:0px;
}
div{
margin:10px;
}
</style>
 
 
<script>
//当点击添加更多时,增加一个DIV
//先增加两个input
 
function addFile(){
var fragment=document.createDocumentFragment();
var divNode=document.getElementById("container");
 
var newDiv=document.createElement("div");
newDiv.setAttribute("id","file");
fragment.appendChild(newDiv);
 
var newInput=document.createElement("input");
newInput.setAttribute("type","file");
newInput.setAttribute("name","选择文件");
newDiv.appendChild(newInput);
 
var newInput=document.createElement("input");
newInput.setAttribute("type","button");
newInput.setAttribute("value","删除");
newInput.setAttribute("onclick","delFile()");
newInput.setAttribute("id","1");
newDiv.appendChild(newInput);
 
divNode.appendChild(fragment);
}
function delFile(){
var divNode=document.getElementById("container");
divNode.removeChild(divNode.firstElementChild);
}
</script>
</head>
<body>
<input type="button" value="选择更多" onclick="addFile()"/>
<div id="container">
<div id="file">
<input type="file" name="选择文件"/>
<input type="button" value="删除" onclick="delFile()" />
</div>
</div>
</body>
</html>

热心网友 时间:2022-04-24 07:47

//要有form标签,设置提交地址。后面就是后台的事了。
<form action="提交地址" method="post" enctype="multipart/form-data">
<input type="button" id="upload" name="" value="选择" />
<input type="submit" id="upload" name="" value="提交" />
</form>
//百度没给我审核通过:“先介绍算法思路,再给出参考代码,并对关键代码做注释说明。提供运行效果截图。”
//这句话是给百度的:“我真实忍不住要骂人,思路,参考代码,注释,还要运行效果截图!!这一串下来要花多少时间??你TM是给我发工资还是怎么!!!??我给别人解决问题浪费我少许时间我可接收我也算助人为乐,现在到好还要像孙子一样按你的指示一步步做事????”

热心网友 时间:2022-04-24 09:05

弹出框用框架(layer.js,具体使用可参考官方文档)。

HTML如下:

!!! 注意这种提交会刷新页面

<form name="upload-file" method="post" enctype="multipart/form-data">
    <label for="upload-file">上传</label>
    <input id="upload-file" type="file" name="images" hidden="hidden">
    <input type="submit" value="提交">
</form>

提交过后后端就可以获取到图片(PHP获取代码如下:$_POST['images'];)

热心网友 时间:2022-04-24 10:40

现在的js上传,基本都是用uploadify这样的脚本,你可以到网上找点这个上传的例子

热心网友 时间:2022-04-24 12:31

使用 ifarme 或者DIV
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
erp可以看评论地址吗 淘宝评论url是什么意思? 揭秘:码牌支付风控升级,背后真相揭秘 电脑电视直播软件哪个好用什么软件好电脑看电视直播 潼南子同街学区是哪些 三极管BU406价格和参数? 火锅料放在冰柜忘了插电一个星期给会坏了吗 火锅的设备有哪些 火锅餐厅厨房有哪些 小火锅厨房设备有哪些 手指肚每天子时发胀、请i可什么原因? 暄字的五行到底属什么,为什么有的说“金”,有的说“火”呢?有高人给确定一下吗!!! 标准五人制足球场地的净高 五人制足球守门员用脚开球怎么判罚 五人制足球人墙能站在门口吗 五人制足球的要领及注意事项?? 足球比赛中人墙的距离是多少? 五人制人墙距离是几米 流放者柯南武器可以附魔几次 流放者柯南阿苏拉的克依木是干什么的 注销需要多久啊?里面说60天,需要那么久吗? 微信如何注销? 说微信注销十五天以后可以注册新的多长时间算十五天 怎么快速注销 注销之后微信账号多久能再次使用? 可以注销么?用手机号注册的怎么注销啊? 丰台区营业执照迁到海淀区怎么办 北京丰台区马家堡营业执照可以在王佐镇贺照云经营吗 阵皮八角肉桂香叶白酒铁观音葱姜老抽煮鹌鹑蛋功效与作用? 北京丰台区企业营业执照多久年检 xuan读音第二音五行属金的字 右手手指肚肿胀的原因 ∴十个手指末端指肚绯红而且有些发胀是什么现像? 右手指头 指肚发麻 疼 发胀 怎么回事 这两天两只手的中指指肚都有点发硬,有一点涨涨的感觉,其他手指都没这种情况,请问可能什么问题? 手指头肚突然很涨而且又痒又痛 还发麻 还摸起来很硬 河间诗经村的由来 诗经村属于哪里 河间能称为诗经故里吗? 有谁知道河北省河间市诗经村在哪里? 安卓手机通知延迟是手机不行了吗 手机接消息有延迟是怎么回事? 河北沧州火车站去河间诗经村怎么走? 西诗经村的诗经村由来 河北省沧州市河间县诗经村离合肥有多少公里 河间诗经公园的由来 西诗经村的介绍 为什么要学习河间歌诗?对学习有什么帮助? 河间歌诗的传承意义 分析诗经留传至今的原因