新しいイメージをサーバーにアップロードしようとしていますが、サーバーから古いイメージを削除しようとしています。ファイルを削除するとnullです、どうすればこれを達成できますか?イベントの更新中にentitydatasourceを使用してテーブルから古い値を取得する(C#ASP.NET)
コード:
protected void BandEditorEntityDataSource_Updating(object sender, EntityDataSourceChangingEventArgs e)
{
Band myBand = (Band)e.Entity;
FileUpload bandlogo = (FileUpload)BandDetailsView.FindControl("BandLogoEditFileUpload");
if (bandlogo.HasFile)
{
string oldbandlogopath = myBand.BandLogoUrl; //<- Returns null value
myBand.BandLogoUrl = fileupload(bandlogo, "~/Images/Uploaded/Band/Logo/");
string oldbandlogodelfile = Server.MapPath(oldbandlogopath);
System.IO.File.Delete(oldbandlogodelfile);
}
}
ファイルのアップロード方法(それがサーバーにファイルをアップロードしますが、それはエラーがスローされますので、データベースは、実際に更新を受信している場合、私はわからないので、動作しているようです):
private string fileupload(FileUpload fileUploadControl, string virtualFolders)
{
string virtualFolder = virtualFolders;
string physicalFolder = Server.MapPath(virtualFolder);
string fileName = Guid.NewGuid().ToString();
string extension = System.IO.Path.GetExtension(fileUploadControl.FileName);
fileUploadControl.SaveAs(System.IO.Path.Combine(physicalFolder, fileName + extension));
string returnUrl = virtualFolder + fileName + extension;
return returnUrl;
}
Ok、保存時にBanLogoUrlを生成し、** url **をデータベースに保存しますか?だから、Bandがデータベースから返ってきたら、BandLogoUrlの中に値が入っていると思いますよね?データが取り込まれたときにBandLogoUrlをチェックしましたか? –
@AlenaKastsiukavetsはい、この方法では指定したフォルダに画像が保存され、保存された画像のURLが返されます。私はサンプルページでこれをテストし、期待どおりに動作します。別のページからデータを取得すると、イメージがそこにあります。 – LordPerun
イメージURLがBandLogoUrl内にあることを意味しますか?またはあなたはそのイメージがページに表示されるのを見ますか? –