如何在通过网页上传之前阅读word文档

时间:2012-03-02 08:01:56

标签: asp.net

我有excel文件abc.xls,我使用命令提示符将其重命名为abc.doc。 我的要求是:我想上传一个正确的doc文件,但在那里我只能检查要上传文件的MIME类型,这还不够。我想在上传doc文件之前确认它是一个doc并且不允许用户上传abc.doc文件,因为它不是doc文件的excel文件。

2 个答案:

答案 0 :(得分:1)

因为OP在评论中写道:

您在这里走错了路,验证应始终在服务器端进行,您可以在客户端添加其他验证,但不是必需的。你必须这样做的原因很简单:

客户端始终可以绕过客户端验证方法,因为客户端完全受其控制。因此,即使您实施验证方法以检查其是否为doc或excel文档,错误的用户始终只会向您发送禁用验证的帖子请求,并且您将获得Excel文档或病毒等。

这是一个核心的网络编程原则:绝不信任输入数据,您无法仅在客户端验证!

其次,您可以在服务器上轻松完成验证。所以你应该上传任何文件(检查文件扩展名和大小),然后在服务器上验证!

答案 1 :(得分:0)

在上传之前,您可能需要一个ActiveX对象来访问客户端系统上的文件内容。使用javascript检查字节数组以查找它是否是真正的doc可能会证明有趣:-) 编辑:

function CheckWordDoc(filepath){
    var fso, f, ts, s;
    var ForReading = 1, ForWriting = 2, ForAppending = 8;
    var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    f = fso.getFile(filepath);
    ts = f.OpenAsTextStream(ForReading, TristateUseDefault);
    while (!ts.AtEndOfStream) {
        s = ts.ReadLine();
        if (s.indexOf("Word.Document.8") != -1) {
            ts.Close( );
            return true;
        }
    }          
    ts.Close( );
    return false;
}

http://www.piclist.com/techref/language/asp/vbs/vbscript/jsmthopenastextstream.htm http://msdn.microsoft.com/en-us/library/hwfw5c59%28v=vs.85%29.aspx