使用Slash Divider插入表FIleName

时间:2015-08-07 14:13:59

标签: c#

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

我该如何解决这个问题?

  

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

c#c​​ode:

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();

1 个答案:

答案 0 :(得分:1)

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

" /"不能被视为有效的Windows文件名的一部分,因此我建议在阻止您使用它时,代码的行为应该如此。