在fileupload控件中上载之前确定文件是否已打开

时间:2011-04-26 21:12:31

标签: c# asp.net file-upload

在C#ASP.net中使用FileUpload Dialog控件时,如何在按下上传按钮之前确定用户上传的文件是否已关闭。这将阻止用户将未保存数据的文件推送到服务器进行处理。

3 个答案:

答案 0 :(得分:2)

AFAIK,你做不到。该文件将:

  • A)无需刷新更改,或
  • B)如果无法打开文件来推送内容(即打开各种锁定)会导致问题 - 发生这种情况的点很可能是在“打开文件”对话框中,但是,用户系统问题。

答案 1 :(得分:2)

这在某种程度上是可行的,但需要付出很多努力并且可能无法控制最终用户环境。

一般步骤如下:

1:您可以使用像CBFS或其他开源库这样的虚拟文件系统(抱歉,除了CBFS之外我没有任何实际经验) - http://www.eldos.com/solutions/solutions-for-developers.php#commchannel

2:创建虚拟文件系统,使其映射到数据库存储或服务器端存储

3:将其映射为最终用户系统上的目录

4:只要最终用户在此共享中创建和修改文件,或者您只接受来自此共享的文件,那么您可以检查打开的文件句柄,如果是,则阻止上传

答案 2 :(得分:0)

这取决于用户编辑文件的方式。例如Word和从Windows Vista或7开始的记事本确实锁定了文件,因此没有其他人可以写入它们。在这种情况下,打开可写文件就很容易,并检查是否出现IOException。

static bool IsWriteProtected(string file)
{
    try
    {
        using (File.OpenWrite(file)) ;
    }
    catch (UnauthorizedAccessException ex)
    {
        return true;
    }

    return false;
}

此致,   Alois Kraus