100分,最先答对的给满分****为什么点击两次上传按钮才能上传
为什么点击两次上传按钮才能上传<script language=javascript>
function a()
{
Form1.upfile1.click();
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<INPUT id="upfile1" type="file" style="WIDTH: 488px; HEIGHT: 22px;DISPLAY: none;" size="62" runat="server">
<asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 632px; POSITION: absolute; TOP: 224px" runat="server"
Text="Button"></asp:Button>
<INPUT type="button" value="打开上传窗口" onclick="a();">
</form>
</body>
</HTML>
后台;
private void Button1_Click(object sender, System.EventArgs e)
{
for(int i=0;i<Request.Files.Count;i++)
{
if(Request.Files[i].ContentLength >0)
{
string filename = System.IO.Path.GetFileName(Request.Files[i].FileName);
Request.Files[i].SaveAs(Server.MapPath("img\\"+filename));
}
Response.Write("1");
Response.Write("保存成功!");
}
}
现象非常怪,点击两次才上传文件,点第一次时上传控件的值就变成空的了,点第二次时才上传。 --------------------编程问答-------------------- 我在线 --------------------编程问答-------------------- 大家都不知道??? --------------------编程问答-------------------- 弄不好,又得半夜时,高手才现身,我也正在努力自己搞定,由于对js不是很懂,所以…… --------------------编程问答-------------------- 思路确定有问题!
LZ是想通过Javascript控制还是要通过后台来控制!!?? --------------------编程问答-------------------- <%@ Import Namespace="System.IO" %>
<%@ page Language="C#" debug="true" codepage="936"%>
<html>
<head>
<title>文件上传,aspcool.com </title>
<script language="C#" runat="server">
public void UploadFile(object sender , EventArgs E)
{
if(myFile.PostedFile!=null)
{
//定义一些变量
string nam = myFile.PostedFile.FileName ;
int i= nam.LastIndexOf("\\") ;
string newnm =nam.Substring(i) ;
//改变下面的“c:\\"到你想要保存的地址。
myFile.PostedFile.SaveAs("C:\\Inetpub\\spatial\\csk\\Communities\\Common\\Images\\HtmlTextBoxUserImages\\"+newnm) ;
//取得上传文件的各种属性。
fname.Text=myFile.PostedFile.FileName;
fenc.Text=myFile.PostedFile.ContentType ;
fsize.Text=myFile.PostedFile.ContentLength.ToString();
}
}
</script>
</head>
<body>
<center>
<h3> 文件上传演示</h3>
<form id="uploderform" method="post" action="upload.aspx" enctype="multipart/form-data" runat="server" >
<table border="1" cellspacing="0" cellpadding="0" >
<tr> <td><h5>选择文件</h5></td</tr>
<tr><td>
<input type="file" id="myFile" runat="server" >
</td></tr>
<tr><td>
<input type="button" value="Upload" OnServerClick="UploadFile" runat="server" >
</td></tr>
</table>
</form>
<br>
<br>
<table border="1" cellspacing="0">
<tr><td><b>文件资料</b></td>
<td> </td>
</tr>
<tr>
<td>文件名称 :</td>
<td><asp:label id="fname" text="" runat="server" /></td></tr>
<tr>
<td>文件类型 :</td>
<td><asp:label id="fenc" runat="server" /></td></tr>
<tr>
<td>文件大小 :(in bytes)</td>
<td><asp:label id="fsize" runat="server" /></td></tr>
</table>
<br>
<br>
<br>
</center>
</body>
</html>
--------------------编程问答-------------------- 为什么要2个button? --------------------编程问答-------------------- 其实就二步:
s1: <input type="file" id="myFile" runat="server" >
s2: myFile.PostedFile.SaveAs("path"); --------------------编程问答-------------------- 按照楼主的思路是很难的,因为你想用客户端的javascript来调用服务器的方法
就你现在的代码如果 这个按钮
<INPUT type="button" value="打开上传窗口" onclick="a();">
被点击了,服务器是根本不知道的
其中的Form1.upfile1.click();是客户端方法
--------------------编程问答-------------------- http://community.csdn.net/Expert/topic/4922/4922167.xml?temp=.9044306
貌似做不到啊 --------------------编程问答-------------------- 怎么都没看明白搂主的意思呢,搂主要隐藏file控件。 --------------------编程问答-------------------- 其实,我想模仿的是www.126.com邮箱中添加附件的效果,真的很好的,既然它能实现,我们努力也能实现。 --------------------编程问答-------------------- 真希望有高手指点一下。 --------------------编程问答-------------------- 点两次,才能提交,真正原因是什么呢?????? --------------------编程问答-------------------- 想模仿的是www.126.com邮箱中添加附件的效果
//////////////////////////////////////////////
不知楼主有没有看163页面的html
看了我想楼主就不难做出了 --------------------编程问答-------------------- 特别是它的js
很多东西都是用js生成的,如文本控件 --------------------编程问答-------------------- 我看了163的,但是126的真是不同,现在主要是为什么非要点两次才能提交??真是怪了,也没有中间状态啊。 --------------------编程问答-------------------- 你把file的display 去掉,让它显示就会发现第一次是去掉了选中的值
--------------------编程问答-------------------- 我这个机子没装VS,朋友的电脑,要不我一定会看看的;
你可以自己调试看下嘛 --------------------编程问答-------------------- cpp2017(慕白兄),可不可以给我你一个邮箱地址,我作了一个仿126邮箱中上传的效果,发给您看看,现在就差把上传控件藏起来,试试了好长时间,希望您给指点一下,如果同意,请给发一个短信息。 --------------------编程问答-------------------- 网上曾有一个贴,用了onpropertychange属性,不知是否可行。 --------------------编程问答-------------------- 第一次是去掉了选中的值,为什么要这么做呢?是出于什么目地? --------------------编程问答-------------------- 我看看先
--------------------编程问答-------------------- 这有一篇美化上传控件的文章,但是如果照做也会遇到我说的问题
http://591wap.cn/translate/inputfile/inputfile.html --------------------编程问答-------------------- 我又想了一个办法,在<INPUT id="upfile1" type="file" style="WIDTH: 488px; HEIGHT: 22px;DISPLAY: none;" size="62" runat="server" *onpropertychange="先点一次上传按钮">
结果,出现错误提示,被拦了。????
高手,你们就没有遇见过吗?? --------------------编程问答-------------------- cpp2017(慕白兄),您有什么好办法,请回贴。 --------------------编程问答-------------------- 我也出现过这样问题,是不是提示……拒绝访问。查了很长时间,说是跨域操作,也没啊,借贴,问问高手是怎么回事。 --------------------编程问答-------------------- 这个问题我碰到过,因为你的上传控件是在form中runnat=server的,解决这个问题的方法是你重新建一个form,把它放到该form下即可解决要点多次的问题 --------------------编程问答-------------------- 期待cpp2017(慕白兄),给一个权威讲解。 --------------------编程问答-------------------- 期待cpp2017(慕白兄),给一个权威讲解。 --------------------编程问答-------------------- 靠,我讲的就不权威拉,跟你说照我的方法,就可以解决你的问题,我以前也碰到过的,不相信拉倒 --------------------编程问答-------------------- 当我的页面中有asp.net ajax的updatepanel控件时,用fileupload上传也有这种问题.
所以我把这个问题归咎于ajax. --------------------编程问答-------------------- bcwchina(修哲),您别气,我说的权威讲解是指,出现这种现象的根本原因是什么?
用您方法,后代码还用改一下不?
private void Button1_Click(object sender, System.EventArgs e)
{
for(int i=0;i<Request.Files.Count;i++)
{
if(Request.Files[i].ContentLength >0)
{
string filename = System.IO.Path.GetFileName(Request.Files[i].FileName);
Request.Files[i].SaveAs(Server.MapPath("img\\"+filename));
}
Response.Write("1");
Response.Write("保存成功!");
}
}
--------------------编程问答-------------------- heguo(何过),您最终是怎么解决的呢?难到放弃了? --------------------编程问答-------------------- javascript给的值...runat="server"属性的控件 不承认的.
就象:
<select runat="server"></select> 你利用页面javascript改变这个select值. 到服务器,它还是默认值的.
--------------------编程问答-------------------- xie_yanke(谢烟客),您说的话让我有了些了解 --------------------编程问答-------------------- xie_yanke(谢烟客),谢谢您。 --------------------编程问答-------------------- 搂主问题描述不清。 --------------------编程问答-------------------- xuse1(),您哪里认为我说的不清楚呢 --------------------编程问答-------------------- 我耐心等待。 --------------------编程问答-------------------- 谢谢看本贴的各位。 --------------------编程问答-------------------- 可惜,不是jsp的,如果jsp我就会.
不过,动态生成文本框,按钮之类的也懂。呵呵。 --------------------编程问答-------------------- 你想要编写一个服务器用的按钮,然后又编写了一个客户端执行的同名按钮。
<asp:Button ……会被服务器解释成input type=submit传递到浏览器。也就是说runat Server的空间,到了浏览器就只是各种各样的submit而已。
两个按钮实际上有冲突的,我没有环境无法模拟这种情况,但是直接用js编写一个带选择框,然后submit的函数就可以了。
--------------------编程问答-------------------- 看贴的大家都承认LZ说的 点击两次上传按钮才能上传么??
我怎么没有感觉?
--------------------编程问答-------------------- haoyuzhou009(【盲刀】) ,您要是不信,可以把我的代码贴回去试试。真是不知道为什么? --------------------编程问答-------------------- 看来又得等一宿了。 --------------------编程问答-------------------- 还是没有回。 --------------------编程问答-------------------- 学习一下``` --------------------编程问答-------------------- waiting…… --------------------编程问答-------------------- waiting…… --------------------编程问答-------------------- 我调试代码了 是一次。。。。 --------------------编程问答-------------------- 遇到了相同问题,还没解决,期待答案; --------------------编程问答-------------------- Waiting..... --------------------编程问答-------------------- 热烈祝贺ASP.NET群7947148成立了。( --------------------编程问答-------------------- 163的解决方案,找了半天才找出来的
js 部分:
=========================
function selfile()
{
$("fileurl").value = $("file").value;
}
=========================
css部分:
==========================
<style>
a.addfile{width:70px;height:20px;position:relative;cursor:hand;top:4px;top/**/:0;text-decoration:none;background-position:-823px -17px;display:inline;float:left;margin-top:-5px;margin-top/**/:-1px}
*:lang(zh) a.addfile{margin-top:-2px;cursor:pointer}
a.addfile:hover{background-position:-911px -17px;text-decoration:none}
input.addfile{width:1px;height:18px;cursor:pointer!important;cursor:hand;position:absolute;top:5px;left:-5px;left/**/:-3px;opacity:0;filter:alpha(opacity=0)}
*:lang(zh) input.addfile{left:-18px}
</style>
====================
html部分:
<input type="text" value="" id="fileurl" name="fileurl" readonly/>
<a href="#" class="addfile">
<input type="file" name="file" id="file" hideFocus class="addfile" onChange="selfile();"/>+添加附件</a> --------------------编程问答-------------------- 晕,这个几年前就碰到过了, --------------------编程问答-------------------- 很容易处理,不过我也不知道具体原因是什么,只要在添加input file的时候注意一下,用html控件就可以了.反正你的后台代码里是不需要在inputfile里获取什么值的 --------------------编程问答-------------------- 好长,慢慢看 --------------------编程问答-------------------- 在asp.net 中用file 控件好像是实现不了,如果不手动点浏览按扭 值会一直为空 --------------------编程问答-------------------- up --------------------编程问答-------------------- 楼主
如果你不自己写上传控件,用html控件或者web控件,是无办法实现126的效果的
--------------------编程问答-------------------- 去掉<INPUT type="button" value="打开上传窗口" onclick="a();">,
试试,加上OnClientClick="a()" OnClick="Button1_Click"
OnClientClick是一个先调用客户端,再执行这样服务器端
具体前台代码给为如下:
<script language=javascript>
function a()
{
Form1.upfile1.click();
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<INPUT id="upfile1" type="file" style="WIDTH: 488px; HEIGHT: 22px;DISPLAY: none;" size="62" runat="server">
<asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 632px; POSITION: absolute; TOP: 224px" runat="server"
Text="Button" OnClientClick="a()" OnClick="Button1_Click" ></asp:Button>
</form>
</body>
</HTML>
--------------------编程问答-------------------- 顶 --------------------编程问答-------------------- 测试一下刚才写的不对,<INPUT id="upfile1" type="file" style="WIDTH: 488px; HEIGHT: 22px;" 把DISPLAY: none去掉不需要,直接浏览后按Button上传不行吗
前台改为下面
<script language=javascript>
function a()
{
Form1.upfile1.click();
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<INPUT id="upfile1" type="file" style="WIDTH: 488px; HEIGHT: 22px;" size="62" runat="server">
<asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 632px; POSITION: absolute; TOP: 224px" runat="server"
Text="Button" OnClick="Button1_Click" ></asp:Button>
</form>
</body>
</HTML> --------------------编程问答-------------------- sendling兄,这个后台取不到值啊
补充:.NET技术 , ASP.NET