Uprzejmie pomóż mi rozwiązanie do przesłania obrazu i wyświetlania strony klienta. Jednocześnie, muszę zapisać obraz na serwerze bez odświeżania całej strony, ponieważ inne elementy sterujące są tworzone dynamicznie za pomocą skryptu Java, który zniknie, gdy cała strona zostanie odświeżona.

Znaleziono rozwiązanie:

<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
psobhan 20 grudzień 2011, 15:05

4 odpowiedzi

Najlepsza odpowiedź

Najbardziej trywialne rozwiązanie może używać iframe, zawierającego formularz, wewnątrz strony. Podczas przesyłania formularza tylko Iframe zostanie odświeżona, a nie całą stronę

W przeciwnym razie możesz wysłać reprezentację Base64 o swoim serwerze przez AJAX. Można to osiągnąć w nowszej przeglądarce, ładując obraz w elemencie <canvas> i przy użyciu metody toDataURL() (patrz Pobierz dane obrazu w JavaScript?)

1
Community 23 maj 2017, 10:34

Musisz użyć tego AJAX.

2
Sachin Kainth 20 grudzień 2011, 11:07

Sprawdź http://www.phepletter.com/our-projects/ajaxfileupload/

0
Kurt 20 grudzień 2011, 11:14

Możesz użyć AJAX do wysyłania obrazów (s),

Najpierw zdobądź dane obrazu:

var pic = dokument.getElementbyd ("mycanvas"). Todataurl ("obraz / png");

I wyślij go na serwer przez 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.");
        }
    });

I napisz usługę na serwerze "Save_picture.aspx / UploadPic", aby przeczytać dane obrazu:

bajt [] dane = convert.frombase64string (imagedata);

0
Andrew Barber 17 listopad 2012, 02:03