FileUpload控件验证上传类型的问题
<asp:RegularExpressionValidatorID="FileUpLoadValidator"runat="server"ErrorMessage="只允...
<asp:RegularExpressionValidator ID="FileUpLoadValidator" runat="server" ErrorMessage="只允许上传图片文件(后缀为:.jpg|.JPG|.gif|.GIF.bmp|.BMP)"
ValidationExpression="^(([a-zA-Z]:)|(\{2}w+)$?)(\(w[w].*))(.jpg|.JPG|.gif|.GIF|.bmp|.BMP)$" ControlToValidate="FileUpload1">
</asp:RegularExpressionValidator>
网上找了段这样的代码
但运行时却抱错:
正在分析“^(([a-zA-Z]:)|(\{2}w+)$?)(\(w[w].*))(.jpg|.JPG|.gif|.GIF|.bmp|.BMP)$”- ) 过多。
这是怎么回事? 展开
ValidationExpression="^(([a-zA-Z]:)|(\{2}w+)$?)(\(w[w].*))(.jpg|.JPG|.gif|.GIF|.bmp|.BMP)$" ControlToValidate="FileUpload1">
</asp:RegularExpressionValidator>
网上找了段这样的代码
但运行时却抱错:
正在分析“^(([a-zA-Z]:)|(\{2}w+)$?)(\(w[w].*))(.jpg|.JPG|.gif|.GIF|.bmp|.BMP)$”- ) 过多。
这是怎么回事? 展开
1个回答
展开全部
你的我看不明白。我给你一段我自己的吧。
//******************封装浏览控件*********************//
FileUpload sss = this.FileUpload1; //封装一个浏览控件
moditem.PartSpecifications = GetImageServerPath(sss);//相映规格书路径了,也就是返回的服务器路径了
----------------调用GetImageServerPath方法-------------------------
/// <summary>
/// 修改文件名称并上传, 获取文件服务器地址返回
/// </summary>
/// <param name="imgObj"></param>
public string GetImageServerPath(FileUpload imgObj)
{
string itemname = Tvw.SelectedNode.Text;
string serverpath = "";
bool fileOk = false;
//获取文件上传的路径(在项目地址里面)
//string path = Server.MapPath("下载/");
//获取文件上传目的路径(在服务器)
string path = "F:\\所有相映文档上传地址\\";
//获取文件的名称
string fn = imgObj.FileName;
ViewState["file"] = fn;
try
{
if (imgObj.HasFile)
{
string fileExtension = Path.GetExtension(imgObj.FileName).ToLower();
string[] allowExtension = { ".rar", ".xls", ".doc", ".ppt" };
for (int i = 0; i < allowExtension.Length; i++)
{
if (fileExtension == allowExtension[i])
fileOk = true;
else { }
}
}
if (fileOk)
{
//这里定义了一个时间time 就是把时间都搞这里来,然后通过,serverpath 拼起来成一个文件名,就是有很长的名字,都是数字啦。不、再是你的比本地的文件名了。
string itname = "(" + itemname + ")";
//文件名称
ViewState["wjm"] = itname + fn;
string time = DateTime.Now.Year.ToString() + "." + DateTime.Now.Month.ToString() + "." + DateTime.Now.Day.ToString() + "-";
serverpath = path + ViewState["itemname"].ToString() + itname + fn;
File.Copy(imgObj.PostedFile.FileName, serverpath); //关键就是这里, 把本地文件copy到你定义的那个serverpath文件中
}
}
catch (Exception ex)
{
throw ex;
}
return serverpath;//然后返回这个拼好的路径,保存到数据库,以后你访问就可以直接访问服务器上的这个serverpaht 路径下的文件了。
}
//******************封装浏览控件*********************//
FileUpload sss = this.FileUpload1; //封装一个浏览控件
moditem.PartSpecifications = GetImageServerPath(sss);//相映规格书路径了,也就是返回的服务器路径了
----------------调用GetImageServerPath方法-------------------------
/// <summary>
/// 修改文件名称并上传, 获取文件服务器地址返回
/// </summary>
/// <param name="imgObj"></param>
public string GetImageServerPath(FileUpload imgObj)
{
string itemname = Tvw.SelectedNode.Text;
string serverpath = "";
bool fileOk = false;
//获取文件上传的路径(在项目地址里面)
//string path = Server.MapPath("下载/");
//获取文件上传目的路径(在服务器)
string path = "F:\\所有相映文档上传地址\\";
//获取文件的名称
string fn = imgObj.FileName;
ViewState["file"] = fn;
try
{
if (imgObj.HasFile)
{
string fileExtension = Path.GetExtension(imgObj.FileName).ToLower();
string[] allowExtension = { ".rar", ".xls", ".doc", ".ppt" };
for (int i = 0; i < allowExtension.Length; i++)
{
if (fileExtension == allowExtension[i])
fileOk = true;
else { }
}
}
if (fileOk)
{
//这里定义了一个时间time 就是把时间都搞这里来,然后通过,serverpath 拼起来成一个文件名,就是有很长的名字,都是数字啦。不、再是你的比本地的文件名了。
string itname = "(" + itemname + ")";
//文件名称
ViewState["wjm"] = itname + fn;
string time = DateTime.Now.Year.ToString() + "." + DateTime.Now.Month.ToString() + "." + DateTime.Now.Day.ToString() + "-";
serverpath = path + ViewState["itemname"].ToString() + itname + fn;
File.Copy(imgObj.PostedFile.FileName, serverpath); //关键就是这里, 把本地文件copy到你定义的那个serverpath文件中
}
}
catch (Exception ex)
{
throw ex;
}
return serverpath;//然后返回这个拼好的路径,保存到数据库,以后你访问就可以直接访问服务器上的这个serverpaht 路径下的文件了。
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询