2009-11-01 128 views
1

我正在尝试上传文件。在此之前,我需要在保存到指定文件夹之前检查文件类型和大小。 我需要允许用户只上传.jpg,.bmp,.swf,.png,.tiff, 没有其他类似.txt,pdf,.doc和需要检查文件大小总是小于1 MB。我们可以这样做的JavaScript或C#编码在上传之前检查文件类型(.txt,jpg等)和大小

2:和保存文件之前,我需要检查是否有任何文件中的文件夹中有相同的名称,如果它存在比阿尔雷用户告诉文件名退出 并应重命名文件

在这个任何解决方案将是巨大的
谢谢

回答

2

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

至于检查服务器之前是否存在相同的文件名,您需要使用来自此组件的预上载事件之一,以便对服务器进行ajax调用以验证这种情况。

0

您只能在将文件发送到C#中的服务器后检查文件名和大小。可以使用FileName属性检查名称。要获取文件的扩展名,您可以编写Path.GetExtension(upload.FileName)。请注意,文件扩展名为jpg的事实并不意味着它实际上是一个JPEG图像。

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

为了让大小的字节数,检查upload.PostedFile.ContentLength

+0

向下投票:很明显,大小是可用的在表单处理程序中的PostedFile.ContentLength。将文件保存到服务器后进行检查计划很愚蠢 – 2011-09-13 03:02:16

+0

@Andrew:我试图说你不能用Javascript来做。 – SLaks 2011-09-13 13:18:12

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 :-)

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; 
    } 
相关问题