2015-08-07 1 views
0

Когда пользователь добавляет вложение с именем файла, в котором используется специальный символ, такой как разделитель косой черты/я не могу вставить его в таблицу базы данных.Вставить в таблицу FIleName с разделителем косой черты

Как я могу это решить?

файла Пример: АЧТВ ж/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(); 
+0

Вы пытались использовать двойные косые черты? Или используя @ перед этим ... – TGarrett

+0

Я действительно не понимаю, почему вы обрабатываете regexFilename перед назначением параметра @filename? – Graffito

ответ

1

Проблема, как я уверен, вы alr что регулярное выражение обрабатывает/как незаконный символ и удаляет его ...

«/» не может считаться частью допустимого имени файла Windows, поэтому я бы предположил, что это мешает вам использовать его , код ведет себя так, как должен.

Смежные вопросы