如何控制上傳附件的大小?在沒有上傳到伺服器上就能判斷出來 – 用Applet(簽名) + JavaScript在提交前先判斷本地檔案的大小。

來源:互聯網
上載者:User

用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;

}

}

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.