UpdatePanel内使用FileUpload上传…
2014-03-05 14:29
351 查看
今天遇到了一个这样的问题,在使用了UpdatePanel的模板页的内容页,我要使用Fileupload上传图片时,发现了
string file =
FileUpload1.PostedFile.FileName;这里FileName获取不到文件为Null,也就导致了后面的这个string
fileExtension =
Path.GetExtension(file);出现了,经常遇到的问题“未将对象引用设置到对象的实例”。出现这个问题后我很纳闷,第一次遇到Fileupload上传获取不到文件,我就一块一块的代码检查,看那里出问题了,最后发现问题在UpdatePanel上,网上查了一下UpdatePanel和Fileupload发现关于这个问题有很多,看了好几种解决办法都没能成功,最后功夫不负有心人,终于找到解决这个问题的方法了,废话不多说下面来看一下具体实现:
不要管模板页是咋么写的,就只看套用了模板页的内容页就ok,来一个截图:
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
这个截图我想大家可以看明白的,就这样使用一个的就把问题搞定了。至于后台的上传代码么,我就给大家一个粘贴到这里也供大家参考一下了,代码都有注释的。
#region 封面图上传
string uploadImage()
{
//1. 检查上传文件是否存在
string path = Server.MapPath("~/zazhi/bookFrame/");//文件路径
string temp = DateTime.Now.ToString("yyMMddHHmmss");//文件名
bool result = false;
//2.先判断文件夹是否存在,如果不存在则创建再上传,否则直接上传
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
//3.判断文件类型(后缀名)和大小
string AllowType =
System.Configuration.ConfigurationManager.AppSettings["AllowType"].ToString();
int AllowSize =
Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["AllowSize"].ToString())
* 1024;
//文件后缀名
string file = FileUpload1.PostedFile.FileName;
string fileExtension = Path.GetExtension(file);
foreach (string extension in AllowType.Split('|'))
{
//3.判断文件类型(后缀名)和大小
if (fileExtension.ToLower().Equals(extension))
{
if (FileUpload1.PostedFile.ContentLength <
AllowSize)
{
result = true;
}
else
Response.Write("<script>alert('上传的文件大小超过8MB');</script>");
}
}
//4.判断文件是否在服务器上存在。采用时间戳或Guid来标识唯一性
if (result)
{
FileUpload1.SaveAs(path + temp + fileExtension);//上传
lblMessage.Text = "当前上传文件成功!" +
FileUpload1.PostedFile.ContentType;
lblShow.Text
= "<img src='" + path + temp + fileExtension +
"'>";
}
else
Response.Write("<script>alert('上传的文件类型不符合要求!');</script>");
if (lblShow.Text !=
"")
return path + temp +
fileExtension;
else
return null;
}
protected void btnUpload_Click(object sender, EventArgs e)
{
uploadImage();//封面图上传
}
#endregion
这里说明一下:AllowType 和 AllowSize 参数
这个是在web.config中配置的,代码粘帖一下
<appSettings>
<add key="AllowType"
value=".jpg|.bmp|.png|.gif"/>
<add key="AllowSize"
value="800"/>
</appSettings>
string file =
FileUpload1.PostedFile.FileName;这里FileName获取不到文件为Null,也就导致了后面的这个string
fileExtension =
Path.GetExtension(file);出现了,经常遇到的问题“未将对象引用设置到对象的实例”。出现这个问题后我很纳闷,第一次遇到Fileupload上传获取不到文件,我就一块一块的代码检查,看那里出问题了,最后发现问题在UpdatePanel上,网上查了一下UpdatePanel和Fileupload发现关于这个问题有很多,看了好几种解决办法都没能成功,最后功夫不负有心人,终于找到解决这个问题的方法了,废话不多说下面来看一下具体实现:
不要管模板页是咋么写的,就只看套用了模板页的内容页就ok,来一个截图:
![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
这个截图我想大家可以看明白的,就这样使用一个的就把问题搞定了。至于后台的上传代码么,我就给大家一个粘贴到这里也供大家参考一下了,代码都有注释的。
#region 封面图上传
string uploadImage()
{
//1. 检查上传文件是否存在
string path = Server.MapPath("~/zazhi/bookFrame/");//文件路径
string temp = DateTime.Now.ToString("yyMMddHHmmss");//文件名
bool result = false;
//2.先判断文件夹是否存在,如果不存在则创建再上传,否则直接上传
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
//3.判断文件类型(后缀名)和大小
string AllowType =
System.Configuration.ConfigurationManager.AppSettings["AllowType"].ToString();
int AllowSize =
Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["AllowSize"].ToString())
* 1024;
//文件后缀名
string file = FileUpload1.PostedFile.FileName;
string fileExtension = Path.GetExtension(file);
foreach (string extension in AllowType.Split('|'))
{
//3.判断文件类型(后缀名)和大小
if (fileExtension.ToLower().Equals(extension))
{
if (FileUpload1.PostedFile.ContentLength <
AllowSize)
{
result = true;
}
else
Response.Write("<script>alert('上传的文件大小超过8MB');</script>");
}
}
//4.判断文件是否在服务器上存在。采用时间戳或Guid来标识唯一性
if (result)
{
FileUpload1.SaveAs(path + temp + fileExtension);//上传
lblMessage.Text = "当前上传文件成功!" +
FileUpload1.PostedFile.ContentType;
lblShow.Text
= "<img src='" + path + temp + fileExtension +
"'>";
}
else
Response.Write("<script>alert('上传的文件类型不符合要求!');</script>");
if (lblShow.Text !=
"")
return path + temp +
fileExtension;
else
return null;
}
protected void btnUpload_Click(object sender, EventArgs e)
{
uploadImage();//封面图上传
}
#endregion
这里说明一下:AllowType 和 AllowSize 参数
这个是在web.config中配置的,代码粘帖一下
<appSettings>
<add key="AllowType"
value=".jpg|.bmp|.png|.gif"/>
<add key="AllowSize"
value="800"/>
</appSettings>
相关文章推荐
- 在UpdatePanel上使用FileUpload上传文件(转)
- 使用UpdatePanel时FileUpload失效的问题!【FileUpload上传文件失败】
- 在UpdatePanel上使用FileUpload上传文件
- 在UpdatePanel上使用FileUpload上传文件 (asp.net C#)
- 使用UpdatePanel时FileUpload失效的问题!【FileUpload上传文件失败】
- 在UpdatePanel上使用FileUpload上传文件(转载)
- 在UpdatePanel上使用FileUpload上传文件
- 使用UpdatePanel时FileUpload失效的问题!【FileUpload上传文件失败】
- 在UpdatePanel上使用FileUpload上传文件
- 在updatepanel面板中使用fileupload上传图片
- 在updatepanel面板中使用fileupload上传图片
- 怎样在UpdatePanel里使用FileUpload控件
- 解决Ajax的updatepanel控件不能使用fileupload的问题
- 在使用updatepanel 时,上传到服务器出现如下错误: Sys.WebForms.PageRequestManagerServerErrorException: 在服务器上处理请求时出现未知错误。服务器返回的状态码为: 500
- 转:怎样在UpdatePanel里使用FileUpload控件
- 使用UpdatePanel时FileUpload失效的问题
- Fileupload 如何在updatepanel中上传文件
- updatepanel中不能使用fileupload的弥补方法
- updatepanel中不能使用fileupload的弥补方法
- UpdatePanel中使用FileUpload的变通方法