用斜杠分隔符插入表文件名

  • 本文关键字:文件名 插入 分隔符 c#
  • 更新时间 :
  • 英文 :


当用户添加的附件文件名使用特殊字符(如斜杠分隔符/)时,我无法将其插入到我的数据库表中。

如何解决这个问题?

文件名示例:appt w∕tax.docx

c#代码:

sb.AppendLine("INSERT INTO Attachments(FileName, MimeType, FileSize, [Guid]) VALUES (@FileName, @MimeType, @FileSize, @Guid)");

我已经试过了:

string illegal = ""M"\a/ry/ h**ad:>> a\/:*?"| li*tt|le|| la"mb.?";
string regexFileName = Path.GetFileName(file.FileName);
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(string.Format("[{0}]", System.Text.RegularExpressions.Regex.Escape(regexFileName)));
    illegal = r.Replace(illegal, "");
    cmd.Parameters.Add("@FileName", System.Data.SqlDbType.VarChar).Value = regexFileName;
    cmd.Parameters.Add("@MimeType", System.Data.SqlDbType.VarChar).Value = file.ContentType;
    cmd.Parameters.Add("@FileSize", System.Data.SqlDbType.VarChar).Value = file.ContentLength.ToString();
    cmd.Parameters.Add("@Guid", System.Data.SqlDbType.VarChar).Value = FileNameInFolder.ToString();
    cmd.ExecuteNonQuery();

问题,我相信你已经意识到,是正则表达式将/视为非法字符并将其删除…

"/"不能被认为是有效的windows文件名的一部分,所以我建议在阻止您使用它时,代码的行为应该是这样的。

最新更新