2012-06-20 73 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") 
    { 
     ... 
    } 
}