使用FileUpload上传并预览图片
来源:互联网 发布:女人床上魅惑男人知乎 编辑:程序博客网 时间:2024/04/30 14:49
在Save按钮的btnSave_Click事件处理程序中,FileUpload控件的HasFile属性用于检测文本框中是否输入了有效的完全限定文件名。如果文本框为空或输入的名称无效,将不会通过检测,并且lblMessage将显示“No file upladed”。
假定上传了一个有效文件,那么将执行try代码块中的代码。关键语句是调用File- Upload控件的SaveAs方法。该方法使用硬编码路径和FileName属性传递一个完全限定的文件名。该语句可能会由于各种原因而失败,包括磁盘空间不足、无效的路径或安全问题(稍后会有更详细的说明)。
如果SaveAs方法失败,则执行catch代码块。在lblMessage中显示一个错误信息,包括该异常的Message属性ex.Message。
如果SaveAs方法执行成功,关于上传文件的多个信息将显示在lblMessage中,这些信息通过FileUpload.PostedFile(类型为HttpPostedFile)中的属性获取。
Display按钮的Click事件处理程序与前面的类似,只不过它不是显示文件信息,而是显示文件内容。它通过使用FileContent属性获取表现为Stream对象的上传文件的内容,然后这个Stream对象被用于实例化一个StreamReader对象。StreamReader的Read- Line方法逐行的遍历文件,然后把合并后的字符串显示在lblDisplay中。
当在讨论从客户端上传文件到web服务器时,安全是非常让人关注的。须注意两点,首先,使用这种方式会公开web服务器,从而会有非常大的安全漏洞,为此要特别细心。因为这样不仅可以上传病毒,木马和其他恶意软件,还会存在客户端浏览web服务器目
录结构的危险。因此,应该使用硬编码目标目录,至少严格限定在哪里保存上传的文件。
另外,要注意的一点是,允许在磁盘写文件所必需的权限。在开发web应用程序时,一般情况下,开发机器同时也是web服务器,特别是使用VS2005默认的开发模式。在该模式下使用的是内置的web服务器,并且不通过IIS访问网站而是由文件系统访问网站。这样,永远也不会有权限问题。
然而,当网站部署到产品服务器上,且该网站通过IIS和虚拟目录来访问时,就会出现问题。这是因为运行ASP.NET的账户必须拥有对用于保存上传文件的目录的写权限。在Windows2000/XP中,账户的名称是ASPNET。在Windows Server2003中,写权限必须分配给IIS_WPG账户组。
利用FileUpload控件并结合良好的安全防护,用户可以把自己的文件传送到网站,以丰富网站功能。
下面就是FileUpload控件:
<div>
<asp:FileUpload ID="fulFile" runat="server" onchange="PreviewImg(this)" />
<asp:Button ID="btnUpload" runat="server" OnClick="btnUpload_Click" Text="上传" />
</div>
这里的层用来预览图片:
<div id="newPreview"></div>
因为安全性问题,IE7禁用了image控件引用本地图片,以下是解决方案
在<head></head>之间添加如下代码:
<style type="text/css">
#newPreview {
FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)
}
</style>
<script language="javascript" type="text/javascript">
function PreviewImg(imgFile)
{
var newPreview = document.getElementById("newPreview");
newPreview.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile.value;
newPreview.style.width = "800px";
newPreview.style.height = "720px";
}
</script>
btnUpload click 事件:
protected void btnUpload_Click(object sender, EventArgs e)
{
string path = Server.MapPath("~/Image/");
if (this.fulFile.HasFile)
{
string fileException = System.IO.Path.GetExtension(fulFile.FileName).ToLower();
if (fileException.Equals(".jpg"))
{
this.fulFile.SaveAs(path + fulFile.FileName);
Response.Write("<script>alert('上传成功!');</script>");
Response.Write("文件路径:"+this.fulFile.PostedFile.FileName+" "
+this.fulFile.PostedFile.ContentLength+"字节 MIME内容类型:"
+this.fulFile.PostedFile.ContentType);
}
else
{
Response.Write("<script>alert('上传失败!仅支持JPG格式的图片');</script>");
}
}
else
{
Response.Write("<script>alert('请选择文件!');</script>");
}
}
protected void Button2_Click(object sender, EventArgs e)
{
if(UpLoadPic())
{
Response.Write(FileUpload1.PostedFile.FileName.ToString());
}
}
private string[] AcceptedFileTypes = new string[] { "jpg", "jpeg", "jpe" ,"png","p2p"};
public bool UpLoadPic()//上传
{
bool ifSucess = false;
if (FileUpload1.PostedFile.ContentLength > 0)
{
if (IsValidFileType(FileUpload1.PostedFile.FileName))
{
if (FileUpload1.PostedFile.ContentLength < 1024 * 2000)
{
string fullName = FileUpload1.PostedFile.FileName;
string newName = System.DateTime.Now.ToString("yyyyMMddhhmmss") + fullName.Substring(fullName.LastIndexOf("."));
string path = Server.MapPath("UpLoad");
FileUpload1.SaveAs(path + "/" + newName);
Label1.Text = newName;
Image1.ImageUrl = "UpLoad/" + newName;
Image1.Visible = true;
ifSucess = true;
}
else
{
Response.Write("<script>alert('出错了!上传文件太大!')</script>");
}
}
else
{
ifSucess = false;
Response.Write("<script>alert('出错了!上传文件格式不对!')</script>");
}
}
else
{
Response.Write("<script>alert('出错了!上传文件不能为空!')</script>");
}
return ifSucess;
}
private bool IsValidFileType(string FileName)//图片格式检验
{
string ext = FileName.Substring(FileName.LastIndexOf(".") + 1, FileName.Length - FileName.LastIndexOf(".") - 1);
for (int i = 0; i < AcceptedFileTypes.Length; i++)
{
if (ext.ToLower() == AcceptedFileTypes[i])
{
return true;
}
}
return false;
}
- 使用FileUpload上传并预览图片
- 转:使用FileUpload上传并预览图片
- FileUpload上传图片预览
- 使用FileUpload控件上传前预览图片
- 使用FileUpload上传前预览图片
- 使用FileUpload控件上传前预览图片
- 使用FileUpload控件上传前预览图片
- 使用FileUpload控件上传前预览图片
- Asp.Net FileUpload选择图片后预览,并直接上传
- ASP.NET使用FileUpLoad控件上传图片前预览图片
- ASP.NET在IE7中使用FileUpload上传预览图片
- jquery.fileupload.js插件使用初探--单图片上传预览
- jquery.fileupload.js插件使用初探--多图片上传预览
- fileupload上传图片时图片预览
- 图片上传并预览
- 上传图片并预览
- 图片上传并预览
- 图片上传并预览
- 虚函数与纯虚函数区别
- Linux欢迎你
- 关于Opnet路由和仿真业务配置的说明
- 越来越觉得sprintf 牛了
- CFile操作详解
- 使用FileUpload上传并预览图片
- 创建你的第一个Tapestry5项目
- div+css学习笔记(IE与fox好多不兼容的问题)
- strtok函数的用法
- 皮革变牛奶!牛奶再次出事?!算了,我还是自己榨豆浆吧。中国人喝豆浆!
- nner join on, left join on, right join on讲解
- DB2 v8.2,我真败了,sql语句居然不能把常量的字符串转换成char
- 对于我来说很N的一个SQL :选出传入@ID 选出除@ID外的近四个邻近的ID
- 20090428