2013-07-08 102 views
2

在我的網站中,我已經使用asp文件上傳控件來上傳文件,onclick上傳按鈕將顯示一個面板,其中上傳的圖像將隨着textarea一起顯示編寫圖像的描述。寫完描述後,我必須將圖像保存到數據庫中,同時單擊動態創建的保存按鈕。請給出一些關於如何做到這一點的想法。我的前端代碼如下:如何通過動態加載的控件將數據保存到數據庫

<form id="form1" runat="server"> 

    <div class="transbox" id="mainbk" runat="server" style="position:absolute; top:0px; left:0px; width: 100%; height: 100%;" > 
     <asp:FileUpload runat="server" ID="UploadImages" style="background-color:white; position:absolute; font-family:'Palatino Linotype'; font-size:medium; top: 4px; left: 350px; right: 251px;" Width="500px" AllowMultiple="true"/> 
     <asp:Button runat="server" ID="uploadedFile" style="position:absolute; font-family:'Palatino Linotype'; font-size:medium; top: 4px; left: 870px; width: 112px; height: 29px;" Text="Upload" OnClick="uploadFile_Click" /> 
     <asp:Panel ID="updtpanel" runat="server" CssClass="transbox" style="width:100%;height:100%;left:0px;top:0px;position:absolute" Visible="false"> 

     </asp:Panel> 
    </div> 


    </form> 

和我的後端代碼如下:

protected void uploadFile_Click(object sender, EventArgs e) 
    { 
     if (UploadImages.HasFiles) 
     { 
      int tid = 0; 

      string fileExt = Path.GetExtension(UploadImages.FileName).ToLower(); 
      if (fileExt == ".jpeg" || fileExt == ".png" || fileExt == ".jpg" || fileExt == ".bmp") 
      { 
       HtmlGenericControl d = new HtmlGenericControl("div"); 
       Button btnsave = new Button(); 
       btnsave.Text = "Save"; 


       sb.Append("<div class=" + "\"savback\"" + ">"); 
       sb.Append("<div class=" + "\"head\"" + ">Write Description</div>"); 

       foreach (HttpPostedFile uploadedFile in UploadImages.PostedFiles) 
       { 
        id += 1; 
        tid = tid + 1; 
        string textid = "txt" + tid; 
        filepath = Server.MapPath("~/Images/Gallery/" + uploadedFile.FileName); 
        uploadedFile.SaveAs(filepath); 
        newpath = "../Images/Gallery/" + uploadedFile.FileName; 
        try 
        { 
         updtpanel.Visible = true; 

         sb.Append("<div class=" + "\"dataload\"" + ">"); 
         sb.Append("<img class=" + "\"loadimg\"" + "src=" + "\"" + newpath.ToString() + "\"" + " />"); 
         sb.Append("<textarea class=" + "\"txtdes\"" + "id=" + "\"" + textid + "\"" + "></textarea>"); 
         sb.Append("</div>"); 


        } 

        catch (Exception ex) 
        { 
         Response.Write(ex.Message); 
        } 

       } 

       sb.Append("</div>"); 
       d.InnerHtml = sb.ToString(); 

       updtpanel.Controls.Add(d); 
       updtpanel.Controls.Add(btnsave); 
      } 
      else 
      { 
       Page.ClientScript.RegisterStartupScript(GetType(), "msgbox", "alert('Please Select only Image Files!!');", true); 
      } 

     } 
     else 
     { 
      Page.ClientScript.RegisterStartupScript(GetType(), "msgbox", "alert('Please Select a File First!!');", true);   
     } 
    } 

,這是它的外觀上傳之前:Before Uploading

並上傳後,它看起來像這After Uploading and before Saving

請讓我知道如何將它保存到數據庫後,在下面的文本框中輸入說明t他上傳了照片。

我知道大家都知道facebook如何上傳專輯圖片。同樣,我想在上傳圖片後再將其保存在數據庫中。在Facebook中,描述文本框將被動態創建,如果我沒有錯的話。他們將如何引用每個描述文本框的內容並將其保存在數據庫中。希望我能說清楚。

+1

動態創建保存按鈕的任何特定原因?不會切換可見性工作? – Karthik

+0

http://forums.asp.net/p/1895457/5353700.aspx/1?Re+dynamically+created+link+button+s+click+event+not+firing – Karthik

+0

@Karthik ..你看我已經創建在設計時只有一個面板,而我在運行時添加的所有其他內容。沒有具體的原因,但由於我遵循的設計,我必須這樣做。嗯會考慮它,是否如果我可以改變設計。 :) –

回答

0
在您需要至少3列,第一VARBINARY列被稱爲BLOB列來存儲你的文件,第二個VARCHAR列一個表來存儲你的文件擴展名(例如.GIF,.JPEG數據庫視力

),第三個VARCHAR或NVARCHAR列來存儲您的標題。但重點是在您的應用程序中,您需要將文件轉換爲字節數組,然後將其作爲varbinary參數傳遞給sql server。

private Byte[] getDocumentFormatter(string path) 
     { 
      FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); 
      BinaryReader br = new BinaryReader(fs); 
      Byte[] bytes = br.ReadBytes((Int32)fs.Length); 
      br.Close(); 
      fs.Close(); 
      return bytes; 
     } 

,但在Web環境中,你可以與你的輸出緩衝或你有你site.to斷定使用的方法就像我上面提到的,讓您的文件的byte []數組的任何解決方案替代路徑,則將文件標題和文​​件擴展名傳遞給sql server中的存儲過程。

+0

我已經有一個表「滑塊」在我的數據庫中有3列,即滑動int PK,slurl varchar,slalt varchar。我需要添加任何額外的東西,然後呢? –

+0

是的,你需要添加兩列,例如myFile VARBINARY(MAX)和myFileExtension VARHCAR(10)。 – MAK

+0

是我需要FileExtension嗎? –

相關問題