gpt4 book ai didi

c# - 如何检查文件格式

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:32 26 4
gpt4 key购买 nike

允许的文件格式只有PDF文件,如果上传的文件不是PDF,如何在继续更新数据库之前检查文件格式并显示错误消息。以下代码始终显示无法识别文件,即使文件是 PDF,也未更新数据库。

 string filePath = FileUpload1.PostedFile.FileName;
string filename = Path.GetFileName(filePath);
string ext = Path.GetExtension(filename);
string contenttype = String.Empty;

switch (ext)
{
case ".pdf":

contenttype = "application/pdf";

break;
default:
System.Console.WriteLine("File format not recognised. Only PDF format allowed");
break;
}
if (contenttype != String.Empty)
{
Stream fs = FileUpload1.PostedFile.InputStream;
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((Int32)fs.Length);

string classNmae = ddClass.Text.Split('~')[0] + ddClass.Text.Split('1');
com.Parameters.Clear();
com.CommandText = "UPDATE [Marking] SET [fileName]=@fileName, [fileType]=@fileType, [type]=@typ,[submissionDate]=@sd, [filePath]=@fp where [class_id]=@cid AND [module_id]=@mid AND [student_id]= '" +Session["id"].ToString() + "'";
com.Parameters.Add("@cid", SqlDbType.VarChar).Value = ddClass.Text.Split('~')[0];
com.Parameters.Add("@mid", SqlDbType.VarChar).Value = ddClass.Text.Split('~')[1];
com.Parameters.Add("@fileName", SqlDbType.VarChar).Value = filename;
com.Parameters.Add("@fileType", SqlDbType.VarChar).Value = "application/pdf";
com.Parameters.Add("@typ", SqlDbType.VarChar).Value = txtType.Text;
com.Parameters.Add("@sd", SqlDbType.VarChar).Value = DateTime.Now;
com.Parameters.Add("@fp", SqlDbType.Binary).Value = bytes;

com.ExecuteNonQuery();

}
else
{

lb.Text = "File format not recognised." +

" Upload Word formats";

}

最佳答案

试试这个:

if (FileUpload1.HasFile)
{
HttpPostedFile myPostedFile = FileUpload1.PostedFile;
FileInfo finfo = new FileInfo(myPostedFile.FileName);
if (finfo.Extension.Equals(".pdf", StringComparison.InvariantCultureIgnoreCase) && IsPdf(finfo.FullName))
{
//do the operation
}
}

public bool IsPdf(string sourceFilePath)
{
var bytes = System.IO.File.ReadAllBytes(sourceFilePath);
var match = System.Text.Encoding.UTF8.GetBytes("%PDF-");
return match.SequenceEqual(bytes.Take(match.Length));
}

根据@Darek 和@Andrew 的建议更新。

关于c# - 如何检查文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27662534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com