请问在前台JSP中如何获取上传文件的大小和类型?

时间:2022-11-01 23:24:07
我做了一个上传文件的功能(用的不是smartupload技术),想在前台JSP中验证上传文件的大小和类型,但不知道怎么获取(后台怎么获取和判断我会的),求大神指点迷津!!!

<form name="frm1" method="post" action="icloud.do" enctype="multipart/form-data" > 

<input type="hidden" name="method" value=""/>

<div id="wrapper-iframe-addnewboth">
<div id="container-iframe-addnewboth">
    <table width="100%" class="table">
        <thead>
            <tr>
                <th class="header-th emp-name">${i18map["upload_file"]}</th>
            </tr>
        </thead>
        <tbody>
   <tr>
         <td>
             <table width="100%" class="table">
                <col width="25%" />
                <col width="75%" />
            <tr>
                        <!-- <td>FID :</td> --> 
                        <td><input type="hidden"  name="fid" id="fid" maxlength="20"/></td>
                    </tr>
                     <tr>
                        <!-- <td>FILENAME :</td> -->
                        <td><input type="hidden"  name="filename" id="filename"/></td>
                    </tr>
                    <tr>
                        <td>${i18map["path"]} <font color="red">*</font> :</td>
                        <td><input type="file" name="path" id="path" size="30"/></td>
                    </tr>
                      <tr>
                        <td>${i18map["category"]} <font color="red">*</font> :</td> 
                        <td>
                       <select id="category" name="category" class="select-two long" >
                       <option>${i18map["select"]}</option>
                       <c:forEach items="${categoryList}" var="a">
                       <option value="${a.DESCRIPTION}">${a.DESCRIPTION}</option>
                       </c:forEach>   
</select>  
                        </td>
                    </tr>
                     <tr>
                        <!-- <td>SHA1SUM :</td> --> 
                        <td><input type="hidden"  name="sha1sum" id="sha1sum"/></td>
                    </tr>
                     <tr>
                        <td>${i18map["summary"]} <font color="red">*</font> :</td> 
                        <td><textarea name="summary" id="summary" rows="4" onkeyup="WidthCheck(this,200);"></textarea></td>
                    </tr>
                     <tr>
                         <!--<td>DESCRIPTION :</td> --> 
                         <c:forEach items="${categoryList}" var="a">
                        <td><input type="hidden" name="description" id="description" value="${a.DESCRIPTION}"/></td>
                        </c:forEach>
                    </tr>
                    <tr>
                        <!-- <td>CHANGER :</td> --> 
                        <td><input type="hidden"  name="changer" id="changer"/></td>
                    </tr>
                    <tr>
                        <!-- <td>TIMESTAMP :</td>  -->
                        <td><input type="hidden"  name="timestamp" id="timestamp"/></td>
                    </tr>
                    
                </table>
                <div>Upload File Type:html,txt,pdf</div>
                <div>Upload Max Size:2M</div>
            </td>
        </tr>
        </tbody>
    </table>

    <table width="100%" align="right">
     <tr>
         <td align="right"><font color="red"></font>&nbsp;<input type="button" class="btn" value='${i18map["upload"]}' name="Submit" onclick="dosubmit()"/>&nbsp;&nbsp;<input type="button" class="btn" value='${i18map["close"]}' name="cancel" onclick="window.parent.$.colorbox.close();" /></td>
        </tr>
    </table>
    </div>
</div>
</form>

12 个解决方案

#1


简单点的是根据后缀名。
复杂点根据文件格式。

#2


请大神说的详细点,菜鸟一枚,求代码不然我不知道该怎么写

#3



<input type="file" id="fileText"> 
<input type="button" value="检查文件大小" onclick="checkFileChange(document.getElementById('fileText'));">


<script type="text/javascript">
var  Sys = {};
if(navigator.userAgent.indexOf("MSIE")>0)
{
    Sys.ie=true;
}
if(isFirefox=navigator.userAgent.indexOf("Firefox")>0)
{
    Sys.firefox=true;
}

function checkFileChange(obj)
{
    var filesize = 0;
    
    if(Sys.firefox)
    {
        filesize = obj.files[0].fileSize;
    }else if(Sys.ie)
    {
        var fileobject = new ActiveXObject ("Scripting.FileSystemObject");//获取上传文件的对象
        var file = fileobject.GetFile (document.getElementById("fileText").value);//获取上传的文件
        var filesize = file.Size;//文件大小
    }
    alert(filesize);
}
</script>

#4


3楼正解,mark之,果然很实用

#5


3L,不行啊!报了一个Automation 服务器不能创建对象的错误,好像有
var fileobject = new ActiveXObject ("Scripting.FileSystemObject");
就会报这个错误,实在是不明觉厉啊!求大神再指导,在下愚钝,需详细代码和描述,在此先谢过各位了! 请问在前台JSP中如何获取上传文件的大小和类型?

#6


坐等高手解答呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀!~~!~!~!~!~!~~ 请问在前台JSP中如何获取上传文件的大小和类型?

#7


继续坐等高手呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀!~~!~!~!~!~!~~ 请问在前台JSP中如何获取上传文件的大小和类型?

#8


引用 5 楼 u011029339 的回复:
3L,不行啊!报了一个Automation 服务器不能创建对象的错误,好像有
var fileobject = new ActiveXObject ("Scripting.FileSystemObject");
就会报这个错误,实在是不明觉厉啊!求大神再指导,在下愚钝,需详细代码和描述,在此先谢过各位了! 请问在前台JSP中如何获取上传文件的大小和类型?


降低ie安全设置,再试试

#9


能后台验证就做后台验证呗,前端验证是可以跨越的

#10


引用 9 楼 zishinan 的回复:
能后台验证就做后台验证呗,前端验证是可以跨越的

后台验证会有一个问题,假如你限制上传一个10M的东西,可能过好一会了弹出一个提示框,文件太大,所以最好在前端判断,继续关注中。。。。

#11


引用 8 楼 SeaHome1981 的回复:
Quote: 引用 5 楼 u011029339 的回复:

3L,不行啊!报了一个Automation 服务器不能创建对象的错误,好像有
var fileobject = new ActiveXObject ("Scripting.FileSystemObject");
就会报这个错误,实在是不明觉厉啊!求大神再指导,在下愚钝,需详细代码和描述,在此先谢过各位了! 请问在前台JSP中如何获取上传文件的大小和类型?


降低ie安全设置,再试试

这个方法其实我是知道的,但总不能让每个客户也降低IE安全设置吧,虽然有效,但用户体验太差,会给客户一种不靠谱的感觉,但还是谢谢你的回答,继续等待大神莅临此处~~

#12


可以用javascript来获取文件长度和类型。具体代码可以百度一下。

#1


简单点的是根据后缀名。
复杂点根据文件格式。

#2


请大神说的详细点,菜鸟一枚,求代码不然我不知道该怎么写

#3



<input type="file" id="fileText"> 
<input type="button" value="检查文件大小" onclick="checkFileChange(document.getElementById('fileText'));">


<script type="text/javascript">
var  Sys = {};
if(navigator.userAgent.indexOf("MSIE")>0)
{
    Sys.ie=true;
}
if(isFirefox=navigator.userAgent.indexOf("Firefox")>0)
{
    Sys.firefox=true;
}

function checkFileChange(obj)
{
    var filesize = 0;
    
    if(Sys.firefox)
    {
        filesize = obj.files[0].fileSize;
    }else if(Sys.ie)
    {
        var fileobject = new ActiveXObject ("Scripting.FileSystemObject");//获取上传文件的对象
        var file = fileobject.GetFile (document.getElementById("fileText").value);//获取上传的文件
        var filesize = file.Size;//文件大小
    }
    alert(filesize);
}
</script>

#4


3楼正解,mark之,果然很实用

#5


3L,不行啊!报了一个Automation 服务器不能创建对象的错误,好像有
var fileobject = new ActiveXObject ("Scripting.FileSystemObject");
就会报这个错误,实在是不明觉厉啊!求大神再指导,在下愚钝,需详细代码和描述,在此先谢过各位了! 请问在前台JSP中如何获取上传文件的大小和类型?

#6


坐等高手解答呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀!~~!~!~!~!~!~~ 请问在前台JSP中如何获取上传文件的大小和类型?

#7


继续坐等高手呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀呀!~~!~!~!~!~!~~ 请问在前台JSP中如何获取上传文件的大小和类型?

#8


引用 5 楼 u011029339 的回复:
3L,不行啊!报了一个Automation 服务器不能创建对象的错误,好像有
var fileobject = new ActiveXObject ("Scripting.FileSystemObject");
就会报这个错误,实在是不明觉厉啊!求大神再指导,在下愚钝,需详细代码和描述,在此先谢过各位了! 请问在前台JSP中如何获取上传文件的大小和类型?


降低ie安全设置,再试试

#9


能后台验证就做后台验证呗,前端验证是可以跨越的

#10


引用 9 楼 zishinan 的回复:
能后台验证就做后台验证呗,前端验证是可以跨越的

后台验证会有一个问题,假如你限制上传一个10M的东西,可能过好一会了弹出一个提示框,文件太大,所以最好在前端判断,继续关注中。。。。

#11


引用 8 楼 SeaHome1981 的回复:
Quote: 引用 5 楼 u011029339 的回复:

3L,不行啊!报了一个Automation 服务器不能创建对象的错误,好像有
var fileobject = new ActiveXObject ("Scripting.FileSystemObject");
就会报这个错误,实在是不明觉厉啊!求大神再指导,在下愚钝,需详细代码和描述,在此先谢过各位了! 请问在前台JSP中如何获取上传文件的大小和类型?


降低ie安全设置,再试试

这个方法其实我是知道的,但总不能让每个客户也降低IE安全设置吧,虽然有效,但用户体验太差,会给客户一种不靠谱的感觉,但还是谢谢你的回答,继续等待大神莅临此处~~

#12


可以用javascript来获取文件长度和类型。具体代码可以百度一下。