2016-07-20 10 views
0

新しいイメージをサーバーにアップロードしようとしていますが、サーバーから古いイメージを削除しようとしています。ファイルを削除すると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; 
} 
+0

Ok、保存時にBanLogoUrlを生成し、** url **をデータベースに保存しますか?だから、Bandがデータベースから返ってきたら、BandLogoUrlの中に値が入っていると思いますよね?データが取り込まれたときにBandLogoUrlをチェックしましたか? –

+0

@AlenaKastsiukavetsはい、この方法では指定したフォルダに画像が保存され、保存された画像のURLが返されます。私はサンプルページでこれをテストし、期待どおりに動作します。別のページからデータを取得すると、イメージがそこにあります。 – LordPerun

+0

イメージURLがBandLogoUrl内にあることを意味しますか?またはあなたはそのイメージがページに表示されるのを見ますか? –

答えて

0

更新が開始されたとき_Updatingと更新が完了したときに_Updatedの2つの方法が必要です。あなたが_UpdatedメソッドであなたのURLを見ることを願っています

+0

サンプルコードがありますか?データはすでに前の画像から取得されています。私がしようとしているのは、以前にアップロードされた画像(この時点で手動でデータベースに挿入された画像)があり、その値がすでに存在する画像を指しているということです。私が上記のコードをしたいのは、既存の画像を取得し、データベース値を新しい画像に設定した後に削除することです(もちろんアップロードしてください)。どのようにこれを行うにはどのようなアイデア? – LordPerun

+0

少し誤解されているようですが、ファイルアップロード方法を提供できますか? –

+0

fileuploadメソッドを含めるように質問が更新されました(正しく実装されているかどうかはわかりません) – LordPerun

関連する問題