以下是在 .aspx 源文件中
Page Language="C#" AutoEventWireup="true" CodeBehind="TestForm.aspx.cs" Inherits="TestApp.TestForm"
!DOCTYPE html PUBLIC
Reference Page ="~/TestForm.aspx" // Note: Removed all HTML tags
protected void Upload_Click(object sender, EventArgs e)
{
字符串 noPW = "C:\\Users\\David\\Desktop\\Doc1.docx";
String pwProtected = "C:\\Users\\David\\Desktop\\Test.docx";
// if (isProtected(pwProtected))
// 结果.Text = ("文档受密码保护");
// 别的
// 结果.Text = ("文档不受密码保护");
if (isProtected(noPW))
结果.Text = ("文档受密码保护");
别的
结果.Text = ("文档不受密码保护");
}
以下是 .aspx.cs 代码隐藏文件
使用系统;
使用 System.Collections.Generic;
使用 System.Linq;
使用 System.Web;
使用 System.Web.UI;
使用 System.Web.UI.WebControls;
使用 Microsoft.Office.Interop.Word;
使用 System.Runtime.InteropServices;
使用 Microsoft.Office.Interop.Word;
命名空间 TestApp
{
公共部分类 TestForm : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
公共静态布尔 isProtected(对象文件路径)
{
应用程序 myapp = new Application();
对象 pw = "这个密码";
尝试
{
// 对 Word 文档试试这个
myapp.Documents.Open(ref filePath, PasswordDocument: ref pw); // 尝试打开
myapp.Documents[参考文件路径].Close(); // 如果打开就关闭
}
捕捉(COMException ex)
{
if (ex.HResult == -2146822880) // 因密码无效而无法打开文档
返回真;
别的
Console.WriteLine(ex.Message + " " + ex.HResult); // 调试用,只测试过这一份文件。
}
返回假;
}
}
}
至少在我的计算机上,我得到了两个文件的预期输出,但这并不是你所说的对代码的详尽测试。此外,我尝试使用 FileUpload 控件上传文件,但我收到 COM 错误“找不到 C:\Windows\System\fileName.docx”,这让我很困惑,因为上传的文件来自我的桌面,但是你可能知道为什么会发生这种情况,因为您比我更熟悉 ASP.NET。无论哪种方式,这段代码都是值得尝试的,希望对您有所帮助。