使用HTML-FileUpload-Control上载文件 - 拒绝访问

时间:2015-05-15 13:58:37

标签: c# jquery asp.net iis-7.5

单击我的Import-Button执行以下JQuery代码:

if ($("#fileUpload").val()) {
            $.ajax({
                async: false,
                url: "Handler/Handler.ashx?op=Import",
                data: JSON.stringify(myData),
                type: 'POST',
                contentType: 'application/json; charset=utf-8'
});

myData是一个JSON对象,包含文件路径和HTML元素的其他一些值。

达到此声明时......

using (var fs = new FileStream(filepath, FileMode.Open, FileAccess.ReadWrite))

......这是苍蝇的例外:

UnauthorizedAccessException - Access to the path XXX is denied.

我可以通过向IUSER提供完全控制权限来解决此问题。但是,这不是一个选项,因为我们的最终用户无法在每次上传文件时修改权限。还有其他方式不涉及任何最终用户输入吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你可以在使用前给予飞行许可。

private bool GrantAccess(string filepath)
    {
        FileInfo fInfo = new FileInfo(filepath);
        FileSecurity fSecurity = fInfo.GetAccessControl();

        fSecurity.AddAccessRule(new FileSystemAccessRule("IUSER", 
                      FileSystemRights.FullControl, 
                      AccessControlType.Allow));

        fInfo.SetAccessControl(fSecurity);
        return true;
    }

并在使用-block

之后
private bool RemoveAccess(string filepath)
    {
        FileInfo fInfo = new FileInfo(filepath);
        FileSecurity fSecurity = fInfo.GetAccessControl();

        fSecurity.AddAccessRule(
              new FileSystemAccessRule("IUSER", 
                      FileSystemRights.FullControl, 
                      AccessControlType.Deny));

        fInfo.SetAccessControl(fSecurity);
        return true;
    }

希望它有所帮助。

不要忘记包含using System.IO;