zoukankan      html  css  js  c++  java
  • 上传文件检测大小的几种方式

    最近做了个附件上传的功能,对于附件大小的检测难了我一把。之前都是简单的用FileUpload1.PostedFile.ContentLength 判断的,可是领导发现如果上传几百兆的文件时,会等很久然后弹出来提示框,用户体验非常不好。于是乎,我左百度,右谷歌,再加上Q群求助,博问悬赏…

    忙活了半天。虽然最终领导说“就这样吧”而告终,不过研究的过程也学到了一些小知识,简单记录下。

    在这里感谢dudu张小线白雲天iImax等等园友的拔刀相助。


    1. FileUpload1.PostedFile.ContentLength

    这个是我经常用的一种方式,不过上传大文件就会发现他是上传之后才检测文件大小的。用户体验不是太好

    前台:

    <asp:FileUpload ID="FileUpload1" runat="server" />

    <asp:Button ID="btnUpload" runat="server" Text="上传" />

    后台:

    if (FileUpload1.PostedFile.ContentLength > 10485760)

    {

    MessageBox.Show("上传文件请不要超过10M");

    return;

    }

    string filepath = FileUpload1.FileName;//本地路径

    。。。

    FileUpload1.SaveAs(sSavePath);

    2. HttpPostedFile

    这个测试发现其实也是上传之后才进行判断的,跟上一个的性能差不多。

    前台:

    <input type="file" runat="server" id="FileUpload1" />

    <asp:Button ID="btnUpload" runat="server" Text="上传" onClick="btnUpload_Click" />

    后台:

    HttpPostedFile f = Request.Files[0];

    if (f.ContentLength > 10485760)

    {

    MessageBox.Show("上传文件请不要超过10M");

    return;

    }

    string filepath1 = FileUpload1.Value;//本地路径D:/..

    f.SaveAs(sSavePath);

    3.fso

    客户端检测文件大小 ,这个倒是在客户端检测的,但是会弹出安全提示。

    <html>

    <head>

    <script>

    function getFileSize(fileName) {

    if (document.all) {

    window.oldOnError = window.onerror;

    window.onerror = function (err) {

    if (err.indexOf('utomation') != -1) {

    alert('没有访问文件的权限');

    return true;

    }

    else

    return false;

    };

    var fso = new ActiveXObject('Scripting.FileSystemObject');

    var file = fso.GetFile(fileName);

    window.onerror = window.oldOnError;

    return parseInt(file.Size / 1024) + 'K';

    }

    }

    </script>

    </head>

    <body>

    <form name="formName">

    <input type="file" name="fileName" onchange="alert(getFileSize(this.form.fileName.value))"><br>

    </form>

    </body>

    </html>

    image

    4.jquery uploadify

    这是一个开源的多文件上传组件,测试了一下,可以实现多文件上传,而且效果还不错。官方地址

    image

    具体的配置过程就不赘述了,可以参考 冯威 的博客。

    虽然这次没能把这个方案用上去,不过对自己来说也是一次不错的学习过程。希望下回能够用它来完善程序的客户体验。

  • 相关阅读:
    树---对称的二叉树
    树---二叉树的下一个节点
    阿里一面电话面
    树---重建二叉树
    CVTE电话面
    聊聊平台型游戏
    Ogre-next with Visual Studio 2019, SDL Memset, CL.exe error
    中国能不能制作AAA游戏?
    Simple Cel Shading 钟馗
    Modeling -> Mixamo auto rigging -> UE4 retargeting
  • 原文地址:https://www.cnblogs.com/janes/p/2251471.html
Copyright © 2011-2022 走看看