当前位置:编程学习 > C#/ASP.NET >>

控制FileUpload的问题?

我的后台添加文章页里,我加了一个上传图片项目,控件是FileUpload ,当点击提交图片按钮(ImageButton)时,验证上传控件里的是图片格式,才继续执行,否则,弹出提示框,停止执行。

请问大家,该怎么做啊,我是个新手,大家帮帮忙。 --------------------编程问答-------------------- 使用‘OnClientClick’调用JS验证,
建议使用‘onpropertychange’事件验证,在选中文件后直接验证是否符合要求。

<input type="file" name="addFile" id="AddFile"  class="addfile" onpropertychange="IsFileFlag(this);" runat="server" /> --------------------编程问答--------------------
string savePath = @"../images/uploadfiles/";
                string savePath1 = @"../images/uploadfiles/smallPic/";
                string fileName = Server.HtmlEncode(this.getimagepath());
                string extension = System.IO.Path.GetExtension(fileName);
                string ImageName = null;
                if (fileName != "nopic.gif")
                {
                    if ((extension == ".jpg") | (extension == ".gif"))
                    {
                        ImageName = DateTime.Now.ToString("yyyyMMddhhmmssfff") + extension;
                        savePath += ImageName;
                        savePath1 += ImageName;
                        savePath = Server.MapPath(savePath);
                        savePath1 = Server.MapPath(savePath1);
                    }
                    else
                    {
                        Response.Write("<script>alert('文件上传格式错误');history.back(1);</script>");
                        Response.End();
                    }
                }
--------------------编程问答-------------------- picupload.SaveAs(savePath);
http://blog.csdn.net/greatverve/archive/2008/12/17/3539127.aspx
http://download.csdn.net/source/413279 --------------------编程问答-------------------- 用js验证

js获得文件扩展名函数

function getExtJs(filename)
{
    var i = filename.lastIndexOf(".");
    if(i<0){ alert("文件格式不正确");return false; }
    return filename.substring(i+1);
}

function check()
{
    var o = document.getElementById("UploadFile的id");
    if(o == null || o.value == "")
    {
        alert("没有选择文件");return false; 
    }
    var ext = getExtJs(o.value);
    if(ext != "你允许的扩展名"){ alert("不允许上传该类型文件");return false; }
}


在你的

ImageButton加 OnClientClik="return check()" --------------------编程问答-------------------- <?xml version="1.0" encoding="gb2312" ?>
<Application>    
    <FileUpLoad>
       <Format>.jpg|.gif|.png|.bmp</Format>
    </FileUpLoad>
</Application> --------------------编程问答-------------------- cs代码:判断是否是jpg文档:

if (FileUpload1.HasFile)
{
     if (string.Compare(System.IO.Path.GetExtension(FileUpload1.FileName), ".jpg", true) != 0)
     {
       Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script language=javascript>alert('请提交jpg!!')</script>");
     }
     else
        .....
}
else
  ......... --------------------编程问答-------------------- 貌似上面各位已经给出了服务器端的验证的方法,我再给你个客户端JS验证的方法。两法并用更好,服务器端验证可以解决客户端禁用JS导致用户绕过验证的问题;客户端JS验证可以减少用户操作的步骤(在提交到服务器之前就已经告诉用户错误信息了),从而获得更好的用户体验。
下面的代码你可以修改成ajax的,当然,你得自己去写后台方法和发送和处理XMLHTTP请求。不过一般用下面的JS和上面各位的服务器验证就已经足够了。


   <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Articles_Default2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
    <script type="text/javascript" language="javascript">
       
        function CheckFileType()
        {   
            var objButton=document.getElementById("Button1");//上传按钮
            var objFileUpload=document.getElementById('FileUpload1');//FileUpload
            var objMSG=document.getElementById('msg');//显示提示信息用的DIV
            var FileName=new String(objFileUpload.value);//文件名
            var extension=new String (FileName.substring(FileName.lastIndexOf(".")+1,FileName.length));//文件扩展名
            
            if(extension=="jpg"||extension=="JPG")//你可以添加扩展名
            {
                 objButton.disabled=false;//启用上传按钮
                 objMSG.innerHTML="";
            }
            else
            {
                  objButton.disabled=true;//禁用上传按钮
                  objMSG.innerHTML="请选择正确的文件文件";
             }
        }
        
    
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <div id="msg"></div>
        <asp:Button ID="Button1" runat="server" Text="上传" Enabled="False" />
        <br />
        <asp:FileUpload ID="FileUpload1" runat="server" onChange="javascript:CheckFileType();" />
    
    </div>
    </form>
</body>
</html>


--------------------编程问答--------------------
引用 2 楼 greatverve 的回复:
C# codestring savePath = @"../images/uploadfiles/";
                string savePath1 = @"../images/uploadfiles/smallPic/";
                string fileName = Server.HtmlEncode(this.getimagepath());
                string extension = System.IO.Path.GetExtension(fileName);
                string ImageName = null;
                if (fileName != "nopic.gif")
                {
                …

正解 --------------------编程问答-------------------- Mark
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,