我正在尝试上传文件。在此之前,我需要在保存到指定文件夹之前检查文件类型和大小。 我需要允许用户只上传.jpg,.bmp,.swf,.png,.tiff, 没有其他类似.txt,pdf,.doc和需要检查文件大小总是小于1 MB。我们可以这样做的JavaScript或C#编码在上传之前检查文件类型(.txt,jpg等)和大小
2:和保存文件之前,我需要检查是否有任何文件中的文件夹中有相同的名称,如果它存在比阿尔雷用户告诉文件名退出 并应重命名文件
在这个任何解决方案将是巨大的
谢谢
我正在尝试上传文件。在此之前,我需要在保存到指定文件夹之前检查文件类型和大小。 我需要允许用户只上传.jpg,.bmp,.swf,.png,.tiff, 没有其他类似.txt,pdf,.doc和需要检查文件大小总是小于1 MB。我们可以这样做的JavaScript或C#编码在上传之前检查文件类型(.txt,jpg等)和大小
2:和保存文件之前,我需要检查是否有任何文件中的文件夹中有相同的名称,如果它存在比阿尔雷用户告诉文件名退出 并应重命名文件
在这个任何解决方案将是巨大的
谢谢
至于检查的文件大小和之前上传的扩展,你需要使用某种形式的客户端的控制这样的。我会推荐类似http://swfupload.org/。
至于检查服务器之前是否存在相同的文件名,您需要使用来自此组件的预上载事件之一,以便对服务器进行ajax调用以验证这种情况。
您只能在将文件发送到C#中的服务器后检查文件名和大小。可以使用FileName
属性检查名称。要获取文件的扩展名,您可以编写Path.GetExtension(upload.FileName)
。请注意,文件扩展名为jpg
的事实并不意味着它实际上是一个JPEG图像。
要检查文件是否已经存在,写File.Exists(Path.Combine(@"Your folder", upload.FileName))
为了让大小的字节数,检查upload.PostedFile.ContentLength
。
您可以在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 :-)
解释您可以使用正则表达式来检查文件类型
<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;
}
向下投票:很明显,大小是可用的在表单处理程序中的PostedFile.ContentLength。将文件保存到服务器后进行检查计划很愚蠢 – 2011-09-13 03:02:16
@Andrew:我试图说你不能用Javascript来做。 – SLaks 2011-09-13 13:18:12