在上传之前检查文件类型(.txt,jpg等)和大小

时间:2009-11-01 15:23:44

标签: asp.net

我正在尝试上传文件。在此之前我需要在保存到指定文件夹之前检查文件类型和大小。  我需要允许用户只上传.jpg,.bmp,.swf,.png,.tiff,  没有其他领域像.txt,pdf,.doc和需要检查文件大小总是小于1 MB。我们可以用javascript或c#编码吗

2:在保存文件之前,我需要检查文件夹中是否有任何文件同名,如果有的话,那么用户会告诉文件名退出 并应重命名文件

对此的任何解决方案都会很棒   谢谢

4 个答案:

答案 0 :(得分:2)

至于在上传之前检查文件大小和扩展名,您需要使用某种形式的客户端控制。我推荐像http://swfupload.org/这样的东西。

至于先检查服务器上是否存在相同的文件名,你需要使用这个组件中的一个预上传事件来对服务器进行ajax调用以验证这一点。

答案 1 :(得分:1)

您可以使用正则表达式检查文件类型

<asp:RegularExpressionValidator ID="rexpImageE" Display="Dynamic" runat="server"
 ControlToValidate="fup1" ErrorMessage="Only .gif, .jpg, .jpeg, .png, .tiff"
 ValidationExpression="(.*\.([Gg][Ii][Ff])|.*\.([Jj][Pp][Gg])|.*\.([Bb][Mm][Pp])|.*\.([pP][nN][gG])|.*\.([tT][iI][iI][fF])$)"></asp:RegularExpressionValidator>

您可以检查服务器端的文件大小,如

 if (fup1.PostedFile.ContentLength > lengthInBytes)
    {
        //your message
        return;
    }

答案 2 :(得分:0)

在C#中将文件发送到服务器后,您只能检查文件名和大小。

您可以使用FileName属性检查名称。要获取文件的扩展名,您可以编写Path.GetExtension(upload.FileName)。请注意,文件扩展名为jpg的事实并不意味着它实际上是JPEG图像。

要检查文件是否已存在,请写下File.Exists(Path.Combine(@"Your folder", upload.FileName))

要获取字节大小,请检查upload.PostedFile.ContentLength

答案 3 :(得分:0)

您可以在MSDN找到正确的方法。

这是一个检查文件类型的快速代码段:

if (bannerImageUpload.HasFile)
{
    if (bannerFileExt == ".jpg")
    {
        Stream bannerFileStream = bannerImageUpload.PostedFile.InputStream;
        bannerFileData = new byte[bannerImageUpload.PostedFile.ContentLength];
        bannerFileStream.Read(bannerFileData, 0, 
            bannerImageUpload.PostedFile.ContentLength);
    }
}

使用RegularExpressionValidator在客户端上执行此操作可能更容易。请注意ContentLength属性的使用。使用File.Exists检查目录文件夹中是否有与SLaks所解释的同名的任何现有文件: - )