2012-06-20 4 views
0

Я пытаюсь сохранить несколько изображений с помощью этого кода. Но вместо этого он сохраняет все файлы, включая видео, миниатюру и изображение. Все, что мне нужно сделать, это сохранить только изображения. Что я здесь делаю неправильно? СпасибоСохранение нескольких изображений в C#

List<string> img = new List<string>(); 
               HttpFileCollection httpFileCollection = Request.Files; 
               for (int i = 0; i < httpFileCollection.Count; i++) 
               { 
                   HttpPostedFile httpPostedFile = httpFileCollection[i]; 
                   if (httpPostedFile.ContentLength > 0  && httpPostedFile.ContentType.StartsWith("image/")) 
                   { 
                       httpPostedFile.SaveAs(Server.MapPath("~/Icon/") + System.IO.Path.GetFileName(httpPostedFile.FileName)); 
                       img.Add(Server.MapPath("~/Icon/") + System.IO.Path.GetFileName(httpPostedFile.FileName)); 
                   } 
                    
               } 

cmd.Parameters.AddWithValue("@ImageURL", img.ToArray().Length > 0 ? String.Join(",", img.ToArray()) : Path.GetFileName(FileUpload2.PostedFile.FileName)); 
+0

Вы никогда не проверяет, является ли файл изображения. Вы вызываете httpPostedFile.SaveAs для всех файлов. –

+0

попробуйте добавить еще один оператор в 'if (httpPostedFile.ContentLength> 0)', который будет проверять, является ли файл изображением – harry180

+0

Я редактировал код в соответствии с предложениями и помощью. Но теперь проблема в том, что данные не разделены запятой в той же строке. Вместо этого он сохраняет каждый путь изображения в новой строке. Как я могу это исправить? Благодарю. –

ответ

1

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

HttpFileCollection httpFileCollection = Request.Files; 
for (int i = 0; i < httpFileCollection.Count; i++) 
{ 
    HttpPostedFile httpPostedFile = httpFileCollection[i]; 
    if (httpPostedFile.ContentLength > 0 
     && httpPostedFile.ContentType.StartsWith("image/")) 
    { 
     ... 
    } 
} 
+0

Я имею в виду, что теперь изображения идут, но они не разделяются запятыми, а каждое новое изображение приходит в новую строку. См. Обновленный код, который я использую сейчас. Благодарю. –

1

Вы также можете проверить расширение файла, если вы знаете, что изображения всегда будет из безопасного источника

HttpFileCollection httpFileCollection = Request.Files; 
for (int i = 0; i < httpFileCollection.Count; i++) 
{ 
    HttpPostedFile httpPostedFile = httpFileCollection[i]; 
    string fileNameExtension = System.IO.Path.GetExtension(httpPostedFile.FileName); 
    if (httpPostedFile.ContentLength > 0 && fileNameExtension ==".Jpg") 
    { 
     ... 
    } 
} 
Смежные вопросы