如何控制上传附件的大小?在没有上传到服务器上就能判断出来 - 用Applet(签名) + JavaScript在提交前先判断本地文件的大小。

来源:互联网 发布:passthru php 编辑:程序博客网 时间:2024/05/02 13:54

用javascript好像必须要用activex
还有其他好的办法吗?最好在没有上传到服务器上就能判断出来
---------------------------------------------------------------

修改 

服務器配置-->Internet選項--->DominoWeb引擎--->Http階段作業-->使用中的階段作業上限
---------------------------------------------------------------

在客户端[IE]判断文件大小
<script>
function GetFileSize()
{
var filename=document.all.File.value;
if(filename=='')
{
return false;
}
try
{
var ado_stream=new ActiveXObject("ADODB.Stream");
//1=adTypeBinary;2=adTypeText
 ado_stream.Type=2;
 ado_stream.Open();
 ado_stream.LoadFromFile(filename);//将文件信息存入流
alert((ado_stream.Size/1024).toFixed(2)+"KB")
}
catch(e)
{
window.confirm(e);
return false;
}
return true;
}
</script>
<input type=file id="File"><input type=button onclick="GetFileSize()">
---------------------------------------------------------------
思路跟你说了,程序这么简单不会吧?如何不是作Java的话,可以理解,是做Java的就。。。

如果你没有进行签名的话,也只能是改安全性了哦。。。。。。。。。。

程序如下:

import java.applet.Applet;
import java.io.File;

public class FileChecker extends Applet
 {
    private boolean Debug = false;

    public void setDebug(boolean bDebug)
    {
        Debug = bDebug;
    }

    public boolean getDebug()
    {
        return Debug;
    }

    public void init()
    {
    }
    public void start()
    {
    }
    public void stop()
    {
    }
    public void destroy()
    {
    }

    public void showInfo(String strInfo)
    {
        if(Debug)
        {
            System.out.println(strInfo);
        }
    }

    public String checkSize(String filePathName,String maxFileSize)
    {
        String strResult = "0";
        if(filePathName == null)
        {
            return "No FileName!";
        }
        File file = new File(filePathName);
        strResult = "" + file.length();
        if(file.exists())
        {
            showInfo("file.length():" + file.length());
            if(file.length() > Long.parseLong(maxFileSize))
            {
                strResult = "1";
            }
        }
        else
        {
            strResult = "-1";
        }
        return strResult;
    }

    public static void main(String[] args)
    {
        FileChecker fileChecker = new FileChecker();
        String strFilePathName = "C://Autoexec.bat";
        String strlMaxFileSize = "1024";
        if(args.length >=1)
        {
           strFilePathName = args[1];
        }
        if(args.length >=2)
        {
           strlMaxFileSize = args[2];
        }
        System.out.println(fileChecker.checkSize(strFilePathName,strlMaxFileSize));
    }
}
---------------------------------------------------------------

把JS也给出来吧,好人做到底呀:)
在submit之前检查之。。。不用我说放在哪里了吧?

function checkForm()
{
var strReturn = "";
var strResult = "";
var lFileSize = 0;
oFileChecker = document.applets("FileChecker");
var vFileName = new Array();
vFileName[0] = document.all.tFileUpload1.value;
vFileName[1] = document.all.tFileUpload2.value;

if(oFileChecker != null)
{
for(i = 0;i < vFileName.length;i++)
{
strFileName = vFileName[i];
if(strFileName != "")
{
//oFileChecker.showInfo("Hello");
try
{
strResult = oFileChecker.checkSize(strFileName,maxUploadFileSize);
}
catch(e)
{

}
if(strResult == "-1")
{
strReturn += strFileName + " 文件不存在!请检查!/t/n/n";
}
else
{
if(strResult == "1")
{
strReturn += strFileName + " 文件大小超过限制!请检查!/t/n/n";
}
else
{
lFileSize += parseFloat(strResult);
}
}
}
}
if(strReturn != "")
{
alert(strReturn);
return false;
}
else
{
if(lFileSize > maxUploadFileSize)
{
alert("所选的两个文件总大小超过限制!请检查!/t/n/n")
return false;
}
else
{
return true;
}
}
}

原创粉丝点击