2011-07-16 9 views
0

データベース内に画像URLを追加する際に問題があります。ASP.Netのformview内でfileuploadメソッドを使用しています。画像URL.BTWを記録できるduyurular というテーブルがあります私はSQL Serverデータベースを使用しています。 私の質問は、私はプロセスの更新、削除、FormView.Iでの発表をすることです、私はFileUploadで "img"と呼ばれるフォルダ内の画像をアップロードすることができます。 しかし、私はデータベース内にそれを記録したいと思っています。これらの情報を別のデータベースに追加するときは、イメージURLはありません。 最後に、データベース内にイメージURLを追加できません。FormUploadのFileUpload

ここは私のコードです。

public partial class panel_yoneticipaneli : System.Web.UI.Page 
{ 

FileUpload dosya, dosya1; 
//TextBox t1, t2, t3; 
//Button btn; 
SqlConnection con; 
static string str = "Data Source=SERT;Initial Catalog=Mmakina;Integrated Security=True"; 
string yol = ""; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    dosya = (FileUpload)FormView2.FindControl("FileUpload1"); 
    dosya1 = (FileUpload)FormView2.FindControl("FileUpload2"); 
    // btn = (Button)FormView2.FindControl("ResimKaydetButonu"); 
    //t1 = (TextBox)FormView2.FindControl("DuyuruBaslikTextBox"); 
    //t2 = (TextBox)FormView2.FindControl("DuyuruIcerikTextBox"); 
    //t3 = (TextBox)FormView2.FindControl("DuyuruTarihiTextBox"); 

    Label1.Visible = false; 
    if (Session["KullaniciID"]!=null) 
    { 
     con = new SqlConnection(str); 
     SqlCommand sorgu = new SqlCommand("SELECT * FROM Kullanici WHERE [email protected]", con); 
     sorgu.Parameters.Add("@KullaniciAdi", SqlDbType.VarChar).Value = Session["KullaniciAdi"]; 
      con.Open(); 
     SqlDataReader oku = sorgu.ExecuteReader(CommandBehavior.CloseConnection); 
     Label1.Visible = true; 
     while (oku.Read()) 
     { 
      Label1.Text = oku["KullaniciAdi"].ToString(); 

     } 

    } 
    else { 
     Response.Redirect("error.aspx"); 
    } 


} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    FormsAuthentication.SignOut(); 
    Roles.DeleteCookie(); 
    Session.Clear(); 
    Response.Redirect("giris.aspx"); 

} 

protected void btn_Click(object sender,EventArgs e) { 
    try 
    { 
     if (dosya.HasFile) 
     { 
      dosya.SaveAs(Server.MapPath("~/img/") + dosya.FileName); 
      System.Drawing.Image resim = System.Drawing.Image.FromFile(Server.MapPath("~/img/") + dosya.FileName); 
      yol = "img/" + dosya.FileName; 
      resim.Dispose(); 
      DbUpload(); 


     } 
    } 
    catch (Exception ex) 
    { 

    } 
} 



public void DbUpload() { 
    try { 
        SqlConnection sc = new SqlConnection("Data Source=SERT;Initial Catalog=Mmakina;Integrated Security=True"); 
     SqlCommand scom = new SqlCommand("insert into Duyuru(DuyuruResmi) values(@DuyuruResmi)", sc); 
     scom.Parameters.AddWithValue("@DuyuruResmi", dosya.FileName); 

     scom.ExecuteNonQuery(); 
     sc.Close(); 
    }catch(Exception p){ 
     p.Message.ToString(); 
    } 
} 


protected void UpdateButton_Click(object sender, EventArgs e) 
{ 
try 
    { 

     if (dosya.HasFile) 
     { 
      dosya.SaveAs(Server.MapPath("~/img/") + dosya.FileName); 
      yol = "img/" + dosya.FileName; 
      Response.Write("Fileupload çalışıyor..."); 
     DbUpload(); 
     } 
    } 
    catch (Exception ex) 
    { 
    } 
    }  

あなたが共有できるすべてのコメントをありがとうございます。

+0

関連するコードを投稿し、適切にフォーマットしてください。 –

+0

何か提案がありますか? – Selo

答えて

0

Formview ItemInserting Eventを使用する必要があります。ここでは、構築済みURLを渡すことができます。

protected void frmAsset_ItemInserting(object sender, FormViewInsertEventArgs e) 
{ 
    if (dosya.HasFile) 
    { 
     dosya.SaveAs(Server.MapPath("~/img/") + dosya.FileName); 
     e.NewValues["URL"] = "img/" + dosya.FileName; 
    } 
} 
+0

- まず、面白いことに感謝します。しかし、それは私にエラーを与え、ページは開かない。 – Selo

+0

コンパイラエラーメッセージ:CS1061: 'System.Web.UI.WebControls.FormViewUpdateEventArgs'に 'Values'の定義がなく、 'System.Web.UI.WebControls.FormViewUpdateEventArgs'型の最初の引数を受け入れる拡張メソッド 'Values'がありません。 'を見つけることができました(使用するディレクティブまたはアセンブリ参照がありませんか?) – Selo

+0

Selo;申し訳ありませんが、ItemUpdatingイベントで使用されています。ちょうどそれを逃した。ここでそれはNewValuesでなければなりません、私はちょうど私の答えを更新しました。 –

0

ので、あなたがパスを変更することができ、私はあなただけの完全なURLを指定せずにイメージ名をアップロードすることを示唆している、とあなたは'<add key="ImagesBasePath" value="/img" />'ようにweb.configファイルの画像ベースのパスを保存することができ、あなたがあなたのイメージを持っていてました。イメージ名をConfigurationManager.AppSettings["ImagesBasePath"]に連結してこのイメージのビューを制御することができます。