使用微软自带的上传控件在Chrome下会显示不正常,所以可以自定义一个上传控件来达到兼容的目的:
1、首先需要引用JQuery脚本,在页面的<head>与</head>之间插入如下代码:
<script type="text/javascript" src="js/jquery-1.5.2.js"></script>
2、首先在前台我们这样设置,如下所示,将下面的这段代码放到页面的任意位置
<%--Upload file content--
%>
< div style ="width: 728px; float: left; margin-left: 10px; margin-top: 10px; border-bottom-style: solid;
border-bottom-width: 1px; border-left-style: solid; border-left-width: 1px; border-right-style: solid;
border-right-width: 1px; border-top-style: solid; border-top-width: 1px" >
< asp:UpdatePanel ID ="UpdatePanel2" runat ="server" UpdateMode ="Conditional" >
< ContentTemplate >
< div id ="enquiry_hw2" >
<%--Add upload file-- %>
< div >
< input class ="input_text" readonly ="readonly" type ="text" id ="Text2" name ="txt" />
<%--<asp:ImageButton CssClass= " dd1 " Visible= " false " ID= " btnUpload " runat= " server " Height= " 22px "
Width= " 78px " OnClick= " btnUpload_Click " />-- %>
</ div >
< div id ="divfileTxt" runat ="server" class ="u-file-c" >
< input type ="file" id ="File1" name ="attach" onchange ="txt.value=this.value" />< div
id ="fileuploadtext" id ="div1" >
选择上传文件 </ div >
</ div >
< script type ="text/javascript" >
$(document).ready( function () {
$('.u-file-c').addClass('u-file-btn'); $('.u-file-c').each( function (i, el) {
$( this).html($( this).html());
})
}); </ script >
< asp:TextBox ID ="txtFileUploadRemark" runat ="server" Rows ="3" Height ="45px" TextMode ="MultiLine"
Width ="486px" ></ asp:TextBox >< br />
</ div >
</ ContentTemplate >
</ asp:UpdatePanel >
</ div >
< div style ="width: 728px; float: left; margin-left: 10px; margin-top: 10px; border-bottom-style: solid;
border-bottom-width: 1px; border-left-style: solid; border-left-width: 1px; border-right-style: solid;
border-right-width: 1px; border-top-style: solid; border-top-width: 1px" >
< asp:UpdatePanel ID ="UpdatePanel2" runat ="server" UpdateMode ="Conditional" >
< ContentTemplate >
< div id ="enquiry_hw2" >
<%--Add upload file-- %>
< div >
< input class ="input_text" readonly ="readonly" type ="text" id ="Text2" name ="txt" />
<%--<asp:ImageButton CssClass= " dd1 " Visible= " false " ID= " btnUpload " runat= " server " Height= " 22px "
Width= " 78px " OnClick= " btnUpload_Click " />-- %>
</ div >
< div id ="divfileTxt" runat ="server" class ="u-file-c" >
< input type ="file" id ="File1" name ="attach" onchange ="txt.value=this.value" />< div
id ="fileuploadtext" id ="div1" >
选择上传文件 </ div >
</ div >
< script type ="text/javascript" >
$(document).ready( function () {
$('.u-file-c').addClass('u-file-btn'); $('.u-file-c').each( function (i, el) {
$( this).html($( this).html());
})
}); </ script >
< asp:TextBox ID ="txtFileUploadRemark" runat ="server" Rows ="3" Height ="45px" TextMode ="MultiLine"
Width ="486px" ></ asp:TextBox >< br />
</ div >
</ ContentTemplate >
</ asp:UpdatePanel >
</ div >
</div>
3、然后再项目中添加css文件,主要用到了如下的样式,如下所示:
.u-file-btn {
position:
relative;
direction:
ltr;
height:
18px;
overflow:
hidden;
line-height: 18px; margin-right: 10px; padding: 3px 0; margin-bottom: 6px;
text-align: center; width: 100px; background: #880000; color: #FFF;
}
.u-file-btn input{
cursor: pointer; text-align: right; z-index: 10; font-size: 118px; /* font-size: 118px 工作正常 */
position: absolute; top: 0px; right: 0px; opacity: 0; filter: Alpha(opacity:0);
}
line-height: 18px; margin-right: 10px; padding: 3px 0; margin-bottom: 6px;
text-align: center; width: 100px; background: #880000; color: #FFF;
}
.u-file-btn input{
cursor: pointer; text-align: right; z-index: 10; font-size: 118px; /* font-size: 118px 工作正常 */
position: absolute; top: 0px; right: 0px; opacity: 0; filter: Alpha(opacity:0);
}
4、后台是这样的:
private
void uploadFile()
{
HttpFileCollection files = HttpContext.Current.Request.Files;
string popUploadtip = string.Empty;
System.Text.StringBuilder strMsg = new System.Text.StringBuilder( " <br/> ");
try
{
for ( int iFile = 0; iFile < files.Count; iFile++)
{
HttpPostedFile postedFile = files[iFile];
string fileName = string.Empty, fileExtension = string.Empty, handlefileName = string.Empty, filesubName = string.Empty;
fileName = System.IO.Path.GetFileName(postedFile.FileName);
if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName);
filesubName = fileName.Substring( 0, fileName.IndexOf( " . "));
handlefileName = filesubName + " _ " + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() +
DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() +
DateTime.Now.Second.ToString() + fileExtension;
if (postedFile.ContentLength < 1)
{
this.HiddenSaveUploadValue.Value = " UploadNothing ";
popUploadtip = " 您的文件内容为空,请重新选择文件! ";
this.RegScript( " \n<script type=\"text/javascript\">\n//<![CDATA[\n " + " alert(\" " + popUploadtip + " \") " + " \n//]]>\n</script> ");
}
else
{
postedFile.SaveAs(Server.MapPath( " Uploads/ ") + handlefileName);
this.HiddenSaveUploadValue.Value = " UploadSuccess ";
popUploadtip = " 上传文件成功! ";
this.RegScript( " \n<script type=\"text/javascript\">\n//<![CDATA[\n " + " alert(\" " + popUploadtip + " \") " + " \n//]]>\n</script> ");
}
}
}
}
catch
{
this.HiddenSaveUploadValue.Value = " UploadError ";
popUploadtip = " 文件上传失败! ";
this.RegScript( " \n<script type=\"text/javascript\">\n//<![CDATA[\n " + " alert(\" " + popUploadtip + ex.Message + " \") " + " \n//]]>\n</script> ");
}
}
{
HttpFileCollection files = HttpContext.Current.Request.Files;
string popUploadtip = string.Empty;
System.Text.StringBuilder strMsg = new System.Text.StringBuilder( " <br/> ");
try
{
for ( int iFile = 0; iFile < files.Count; iFile++)
{
HttpPostedFile postedFile = files[iFile];
string fileName = string.Empty, fileExtension = string.Empty, handlefileName = string.Empty, filesubName = string.Empty;
fileName = System.IO.Path.GetFileName(postedFile.FileName);
if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName);
filesubName = fileName.Substring( 0, fileName.IndexOf( " . "));
handlefileName = filesubName + " _ " + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() +
DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() +
DateTime.Now.Second.ToString() + fileExtension;
if (postedFile.ContentLength < 1)
{
this.HiddenSaveUploadValue.Value = " UploadNothing ";
popUploadtip = " 您的文件内容为空,请重新选择文件! ";
this.RegScript( " \n<script type=\"text/javascript\">\n//<![CDATA[\n " + " alert(\" " + popUploadtip + " \") " + " \n//]]>\n</script> ");
}
else
{
postedFile.SaveAs(Server.MapPath( " Uploads/ ") + handlefileName);
this.HiddenSaveUploadValue.Value = " UploadSuccess ";
popUploadtip = " 上传文件成功! ";
this.RegScript( " \n<script type=\"text/javascript\">\n//<![CDATA[\n " + " alert(\" " + popUploadtip + " \") " + " \n//]]>\n</script> ");
}
}
}
}
catch
{
this.HiddenSaveUploadValue.Value = " UploadError ";
popUploadtip = " 文件上传失败! ";
this.RegScript( " \n<script type=\"text/javascript\">\n//<![CDATA[\n " + " alert(\" " + popUploadtip + ex.Message + " \") " + " \n//]]>\n</script> ");
}
}
5、这时可以运行,显示效果如下所示:
在IE中的效果:
在Chrome中的效果:
在火狐中的效果: