在上传文件时,限制上传的文件为JPG,GIF格式,怎么处理?
源代码:
HttpPostedFile hpf = UploadFile.PostedFile;
try
{
UploadFile.Accept = "images/*";
UpfileName.Text= hpf.FileName;
FileSize.Text = hpf.ContentLength.ToString();
//取得文件名(不含路径)
char[] de = {'\'};
string[] AFilename = hpf.FileName.Split(de);
string strFilename = AFilename[AFilename.Length-1];
lblFileName.Text = strFilename;
//保存文件到指定路径
hpf.SaveAs(Server.MapPath("..")+@"..xwzximages_thing"+strFilename);
string var_path = "\xwzx\images_thing\" + strFilename ;
UpfileName.Text = strFilename+"上传成功";
UpfileName.Visible = true;
//保存路径和文件名
myBuExample.UpdateJBJSbyOID(long.Parse(OID.Text.Trim()),var_path);
this.BuilderData();
}
catch
{
UpfileName.Text = UploadFile.Value.ToString() + "上传失败或是出错!";
UpfileName.Visible = true;
string pictype=FileUp.PostedFile.ContentType.ToString().Replace("image/","");
if(pictype=="pjpeg")
{
pictype="jpg";
suffix=".jpg";
}
else
{
pictype="gif";
suffix=".gif";
}
主要就是通过调试获取图片的类型,再判断
if(Extname.ToUpper() == ".JPG" || Extname.ToUpper() == ".GIF")
{
//upload
}
else
{
////
}
//Extname判断文件的扩展名
up
如果不是image不上传,不就好了
这个也可以用脚本控制,如果不是你要的格式,就不许上传(主要用到:split)
其实这就是个虚假的限制
如果用户改名等 就不是很好判断 如传 word 文件时
基本没法判断是否是真的 word 文件。
这个功能我是使用客户端脚本实现的。我用onpropertychange事件触发,然后判断文件扩展名的。比在服务器端判断刷新网页感觉好一些
校验文件头数据或者干脆就用Image去打开,截获错误
否则用户可以把一个其它的文件改一下后缀名然后上传得