本文共 1363 字,大约阅读时间需要 4 分钟。
摘要:ASP.NET自带的FileUpload控件会随着浏览器的不同,显示的样式也会发生改变,很不美观,为了提高用户体验度,所以我们会去自定义FileUpload控件
实现思路:用两个Button和TextBox控件来替代FileUpload控件,当点击Button时触发FileUpload控件的点击事件,然后通过JS把FileUpload控件的Value赋给TextBox
代码:
aspx文件:
1 2 316 28 294 5 6
JS文件:
1 function Check_FilePath() {2 var FilePath = document.getElementById("FileUp");3 var FileNewName = document.getElementById("txtFileName");4 if (FilePath.value != '') 5 { 6 FileNewName.value = FilePath.value;7 }8 }
aspx.cs文件:
1 //Page_Load事件2 this.FileUp.Attributes.Add("onchange", "javascript:return Check_FilePath();");
1 //btnUpload_Click事件 2 //当点击btnUpload_Click时,把文件上传到指定路径 3 //需要考虑多浏览器的问题,如果是IE,直接用FileUpload控件的SaveAs功能,会保存一个空文件 4 string strFileName="本地保存文件的路径"; 5 if (HttpContext.Current.Request.Browser.Browser == "IE") 6 { 7 WebClient wClient = new WebClient(); 8 wClient.DownloadFile(this.txtFileName.Text.Trim(), strFileName); 9 }10 else11 {12 this.FileUp.PostedFile.SaveAs(strFileName);13 }
遗留问题:当IE浏览器安全级别高时,会取不到文件的完整路径,类似于C:\fakepath\TP.jpg,而导致保存不了;
网上的很多解决办法是手动更改IE浏览器的安全级别,我在想是否可以在代码中实现更改IE浏览器的安全级别,研究ing......
希望有解决方案的朋友们可以分享一下:)
如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐]
如果您想转载本博客,请注明出处
如果您对本文有意见或者建议,欢迎留言
感谢您的阅读,请关注我的后续博客