Ich benutze Atmel SAM4E-EK Mikrocontroller als Server, wo eine Webseite erstellt wird und ich Daten über HTTP-Protokoll sende. Aber ich bin in der Download-Funktion stecken, wo ich versuche, eine Datei von meiner SD-Karte herunterladen die Datei wird nicht größer als 512 MB.Herunterladen von Dateien mit AJAX. Von einer SD-Karte.
static int cgi_Download_File(const char *name, char *recv_buf, size_t recv_len)
{
UNUSED(recv_buf);
UNUSED(recv_len);
UNUSED(name);
uint32_t length = 0;
int i;
st = f_open(&file_logging, "Logging_File.csv",FA_OPEN_EXISTING | FA_READ);
for (i=0; i<; i++)
{
st = f_read(&file_logging, Buff_logging ,128 , &br);
sprintf((char *)tx_buf,
"{ \"Download_test\":\"%s\"}",
Buff_logging);
http_sendOk(HTTP_CONTENT_JSON);
http_write((char const *)tx_buf, strlen((char *)tx_buf));
}
}
Der obige Code ist, wo ich die Datei bin Lesen der SD-Karte bilden und versuchen, sie über die HTTP-Protokoll an den Client zu senden. Ich kann nicht mehr als 12kb auf einmal lesen, weil ich meine ganze Erinnerung beschäftigt bin. Also teile ich die Datei in Pakete, also ist Buff_logging im Grunde mein Paket, das 512 Bytes ist.
Dies ist Form der Client-Seite, wo ich AJAX für den Download der Datei verwenden. Grundsätzlich versuche ich, die Pakete nacheinander in Reihenfolge zu bekommen und sie auf dem Client-Datenträger als CSV-Datei wiederherzustellen. Die Ajax-Funktion funktioniert nur für die ersten 512 Bytes, dann erhalte ich keine Pakete mehr.
Ich möchte erwähnen, dass ich keine Erfahrung mit Java HTML oder AJAX habe Ich bin mehr in Low-Level-Programmierung, aber ich werde die Hilfe zu mir sagen, wenn mein Code ein Potenzial hat oder dies der richtige Weg ist es zu tun.
Können Sie die Dokumentation für http_sendOk und http_write/ – Musa
verknüpfen Was meinst du genau? –