2011-12-20 51 views
1

請幫助我解決上傳圖像並將其顯示在客戶端的問題。同時,我需要將圖像保存在服務器中,而不必刷新整個頁面,因爲其他控件是使用Java腳本動態創建的,當整個頁面刷新時會消失。如何在不刷新整個頁面的情況下將圖像上載並保存到服務器中

發現的解決方案:

<div> 
<asp:DataList ID="dtlist" runat="server" RepeatColumns="4" CellPadding="5"> 
<ItemTemplate>  
<div id="divImage" runat="server" onclick="Test()" class="draggable"> 
<asp:Image Width="100" ID="Image1" ImageUrl='<%# Bind("Name", "~/MyImages/{0}") %>' runat="server" /> 
</div> 
<br /> 
<asp:HyperLink ID="HyperLink1" Text='<%# Bind("Name") %>' NavigateUrl='<%# Bind("Name", "~/MyImages/{0}") %>' runat="server"/> 
</ItemTemplate> 
<ItemStyle BorderColor="Brown" BorderStyle="dotted" BorderWidth="3px" HorizontalAlign="Center" 
VerticalAlign="Bottom" /> 
</asp:DataList> 
</div> 

protected void BindDataList() 
{ 
    DirectoryInfo dir = new DirectoryInfo(MapPath("MyImages")); 
    FileInfo[] files = dir.GetFiles(); 
    ArrayList listItems = new ArrayList(); 
    foreach (FileInfo info in files) 
    { 
    listItems.Add(info); 
    } 
    dtlist.DataSource = listItems; 
    dtlist.DataBind(); 

} 

回答

1

最簡單的解決方案可能是在頁面內部使用包含表單的iframe。提交表單時,只會刷新iframe,而不是整個頁面

否則,您可以通過ajax將圖像的base64表示形式發送到您的服務器。這可以在新的瀏覽器來實現,在<canvas>元素加載圖像,並使用toDataURL()方法(見Get image data in JavaScript?

+0

我試圖使用iframe(src)將圖像保存在服務器中,但讓我知道如何在不刷新頁面的情況下顯示保存的圖像。 – psobhan

2

您將需要使用Ajax這一點。

+0

由於我對ajax不太熟悉,請提供相同的解決方案。 – psobhan

0

您可以使用Ajax來發送圖像(S)你想,

第一獲取的圖像數據:

變種PIC =的document.getElementById( 「myCanvas」)toDataURL( 「圖像/ PNG」);

和它通過AJAX發送到服務器:

$.ajax({ 
     type: 'POST', 
     url: 'Save_Picture.aspx/UploadPic', 
     data: '{ "imageData" : "' + Pic + '" }', 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     success: function (msg) { 
      alert("Done, Picture Uploaded."); 
     } 
    }); 

和寫入服務器 「Save_Picture.aspx/UploadPic」 上的服務,以讀出的圖像數據:

字節[ ] data = Convert.FromBase64String(imageData);

相關問題