在我的项目中,我在“文件上传”期间上传Doc或PDF文件以供用户参考浏览所有文件,包括Doc和PDF文件正在显示以供选择,所以我在我的代码中使用了IF条件来检查其他选择的文件是DOC或PDF但我只想显示DOC和PDF文件以供选择,以丢弃我的代码所用的IF语句,
if (FileUpload1.HasFile != false)
{
// Read the file and convert it to Byte Array
string filePath = FileUpload1.PostedFile.FileName;
int size = FileUpload1.PostedFile.ContentLength;
string filename = Path.GetFileName(filePath);
string ext = Path.GetExtension(filename);
string contenttype = String.Empty;
int bufferSize = 1;
byte[] buffer = new byte[bufferSize];
//Set the contenttype based on File Extension
switch (ext)
{
case ".doc":
contenttype = "application/vnd.ms-word";
break;
case ".docx":
contenttype = "application/vnd.ms-word";
break;
case ".pdf":
contenttype = "application/pdf";
break;
}
if (size <= 5242880)
{
if (contenttype != String.Empty && ext == ".doc" || ext == ".docx" || ext == ".pdf")
{
Stream fs = FileUpload1.PostedFile.InputStream;
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((Int32)fs.Length);
string fname = @"E:\Rajesh_Kumar\Application\Valuation\ExamManagement\ExamManagement\FileUpload";
Directory.CreateDirectory(fname);
string strFullFilename = @"E:\Rajesh_Kumar\Application\Valuation\ExamManagement\ExamManagement\FileUpload\" + FileUpload1.FileName;
//SqlCommand qry = new SqlCommand("select Filepath from answerkey");
FileInfo file = new FileInfo(strFullFilename);
//FileInfo file1 = new FileInfo(qry);
fname = Path.Combine(fname, strFullFilename);
if(file.Exists)
{
lblMessage.Visible = true;
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Text = "File - ''"+filename+"'' - already Exists in the Database !!!";
FileUpload1.Focus();
}
else
{
//insert the file into database
string strQuery = "insert into answerkey(Filename, Type, Data,Filepath)" + " values (@Filename, @Type, @Data,@Filepath)";
SqlCommand cmd = new SqlCommand(strQuery);
cmd.Parameters.Add("@Filename", SqlDbType.VarChar).Value = filename;
cmd.Parameters.Add("@Type", SqlDbType.VarChar).Value = contenttype;
cmd.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes;
cmd.Parameters.Add("@Filepath", SqlDbType.VarChar).Value = filePath;
InsertUpdateData(cmd);
File.Copy(filePath, strFullFilename, true);
lblMessage.Visible = true;
lblMessage.ForeColor = System.Drawing.Color.Green;
string filename1 = Path.GetFileNameWithoutExtension(filename);
lblMessage.Text = "File - '' " + filename1 + " '' - of Size - ''" + size + " bytes'' - has been Uploaded Successfully";
}
}
else
{
lblMessage.Visible = true;
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Text = "File format not recognised.Upload Word/PDF formats Only";
FileUpload1.Focus();
}
}
else
{
lblMessage.Visible = true;
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Text = "File Size is larger than 5 MB !!!";
FileUpload1.Focus();
}
}
else
{
lblMessage.Visible = true;
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Text = "Please Select a File !!!";
FileUpload1.Focus();
}
}
提前致谢...
答案 0 :(得分:1)
如果是网络,则无法执行此操作。
顺便说一下,你可以看到链接:
How to restrict file type in FileUpload control
答案 1 :(得分:0)
使用正则表达式验证器:
<asp:RegularExpressionValidator
id="RegularExpressionValidator1" runat="server"
ErrorMessage="Only Word and PDF files are allowed!"
ValidationExpression="^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))(.pdf|.PDF|.doc|.DOC|.docx|.DOCX)$"
ControlToValidate="FileUpload1" CssClass="text-red"></asp:RegularExpressionValidator>
希望这会有所帮助:)