0

このコードを使用して複数の画像を保存しようとしています。ただし、代わりに、ビデオ、サムネイル、画像を含むすべてのファイルを保存します。私がする必要があるのは画像だけを保存することです。私はここで何が間違っているのですか?ありがとう

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

2 に答える 2

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/"))
    {
         ...
    }
}
于 2012-06-20T10:03:20.530 に答える
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")
    {
         ...
    }
}
于 2012-06-20T10:10:33.387 に答える