asp.netファイルアップロードコントロールを使用して複数の画像をアップロードします。このソリューションのための多くの提案があります.. 現在DataTableを使用しています。すべての画像はDataTableビューステートに置かれ、その行をチェックしています。既に存在すればFileNameをチェックしてアップロードしません。しかし ユーザーが別のフォルダ/パスから同じ名前の画像をブラウズ/アップロードするとそれは問題になるでしょう。私のコードはここにありますC#、asp.netで一度に複数の画像をアップロード中にその画像が既に存在するかどうかを確認する方法
private void AttachImage()
{
string fileName = Convert.ToString(Guid.NewGuid());
string filePath = "images/" + fileName;
fileName = Path.GetFileName(ImageUpload.PostedFile.FileName);
ImageUpload.SaveAs(Server.MapPath(filePath));
DataTable dt = new DataTable();
DataColumn dc = new DataColumn();
dc = new DataColumn("Name", typeof(String));
dt.Columns.Add(dc);
dc = new DataColumn("Path", typeof(String));
dt.Columns.Add(dc);
dt.Rows.Add(fileName, filePath);
if (ViewState["dt"] == null)
{
ViewState["dt"] = dt;
}
else// (ViewState["dt"] != null)
{
DataTable tmpTable = (DataTable)ViewState["dt"];
tmpTable.Rows.Add(fileName, filePath);
ViewState["dt"] = tmpTable;
}
lstProductsImage.DataSource = (DataTable)ViewState["dt"];
lstProductsImage.DataBind();
}
2番目:GUIDを使用してイメージを割り当てます。 FileNameを変更するだけで、このファイルがサーバーに存在するかどうかを判断することができないため、適切ではありません。 3番目のオプションは、ファイルがアップロードフォルダに既に存在する場合、既存のファイルを上書きするかどうかをユーザーに尋ねることができます。 またはSystem.IO.File.Exists(pathToCheck))
を使用する必要がありますか?
私はあなたの側から良い提案をしたい... ありがとう: Saquib
あなたは、あなたがフォルダAから画像abc.pngを選択してアップロードすると、フォルダBから別の別の画像を選択し、その画像が同じであれば名前がabc.pngの場合、画像名を確認すると画像はアップロードできません。同じ名前の画像がすでに存在しているためですテーブルのsts。それが彼の問題です。 –
それが事実なら、私は彼がアップロードから取っているすべてがファイル名であるので、2つのファイルを区別する方法がないので、システムをより高度にする必要があると思う。したがって、GUIDを使用したとしても、アップロード後に保存されるファイルパスは同じになります(images/abc.jpg)。さらに、ViewStatesの使用は、データを保存するための非常に一時的なソリューションです。ポストバックなしでページが訪問されるとすぐに、データはなくなります。その後、GUIDファイル名がすべて一意であるため、File.Existsは機能しなくなりました。 – CoderMarkus