2016-10-09 5 views
0

Ich arbeite in Socket-Programmierung mit Hilfe von C++ und ich muss einen Code zum Download der Datei schreiben. Mein Http-Header für diese ist:Datei herunterladen ohne Erweiterung Socket-Programmierung

char header[] = "HTTP/1.1 200 OK\r\nContent-Type:application/vnd.ms-excel;Content-Disposition:attachment;filename:\"abc.xls\";Content-Length:14; \r\n\r\n"; 

aber Datei erhalten heruntergeladen „Download“ es auch nicht über Verlängerung. Ich habe auch versucht, dies mit

char header[] = "HTTP/1.1 200 OK\r\nContent-Type:application/octet-stream;Content-Disposition:attachment;filename:\"abc.xls\";Content-Length:14; \r\n\r\n"; 

aber seine nicht funktioniert. Kann mir jemand diesbezüglich helfen?

Antwort

1

Die HTTP-Response-Header Sie versucht haben, sieht wie folgt aus:

HTTP/1.1 200 OK 
Content-Type:application/vnd.ms-excel;Content-Disposition:attachment;filename:"abc.xls";Content-Length:14; 

stattdessen sollte es dieses

HTTP/1.1 200 OK 
Content-Type:application/vnd.ms-excel 
Content-Disposition:attachment;filename="abc.xls" 
Content-Length:14 

aussehen empfehle ich Ihnen die relevanten Normen studieren, bevor ein Protokoll umzusetzen versuchen. In diesem Fall ist dies der HTTP-Standard (RFC 7230 und nachfolgender RFC) und "Verwendung des Inhaltsdispositionskopffeldes im Hypertext Transfer Protocol (HTTP)" (RFC 6266).

+0

Hallo Ich habe es versucht, aber es hat nicht funktioniert: \t Char Header [] = "HTTP/1.1 200 OK \ r \ nContent-Typ: application/vnd.ms-Excel \ r \ nContent-Disposition: Anhang; Dateiname: \ "abc.xls \" \ r \ nContent-Length: 14 \ r \ n \ r \ n "; – AnonymousDev

+1

@Varun: Bitte schauen Sie sich das Beispiel an, das ich gegeben habe. Es muss 'filename =' und nicht 'filename:' ​​sein. Und du solltest dich wirklich mit Standards vertraut machen, anstatt nur herumzuspielen. –

Verwandte Themen