Ich versuche, eine Datei zu HTTP-Server über POST-Anforderung (C++ und winapi) zu senden, vor:das Hochladen von Dateien mit Httpsendrequest C++
// Read file into "buff" and file size into "buffSize"
....
....
....
HINTERNET internetRoot;
HINTERNET httpSession;
HINTERNET httpRequest;
internetRoot = InternetOpen(agent_info, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL);
//Connecting to the http server
httpSession = InternetConnect(internetRoot, IP,PORT_NUMBER, NULL, NULL, INTERNET_SERVICE_HTTP, NULL, NULL);
//Creating a new HTTP POST request to the default resource on the server
httpRequest = HttpOpenRequest(httpSession, TEXT("POST"), TEXT("/Post.aspx"), NULL, NULL, NULL, INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE, NULL);
//Send POST request
HttpSendRequest(httpRequest, NULL, NULL, buff, buffSize);
//Closing handles...
In Server Ich bin recieving die Datei mit diesem Code (asp.net)
Stream httpStream;
try
{
httpStream = request.RequestContext.HttpContext.Request.InputStream;
}
catch (HttpException)
{
return;
}
byte[] tmp = new byte[httpStream.Length];
int bytesRead = httpStream.Read(tmp, 0, 1024 * 1024);
int totalBytesRead = bytesRead;
while (bytesRead > 0)
{
bytesRead = httpStream.Read(tmp, totalBytesRead, 1024 * 1024);
totalBytesRead += bytesRead;
}
httpStream.Close();
httpStream.Dispose();
//Save "tmp" to file...
ich große Dateien auf lokalen Server (Visual Studio aSP-Server) senden kann, aber ich kann Dateien über 1 MB Internet-Server nicht senden. (HttpOpenRequest ist fehlgeschlagen) gibt es eine bessere Möglichkeit zum Hochladen von Dateien?
Dank für die Antwort, die ich versuche, dass, aber es ist seltsam, warum lokal hat es funktioniert (da kein IIS beteiligt) und wenn wir durch IIS gingen, änderten sich die Dinge ... – CnativeFreak
@CnativeFreak: Nun, das klingt richtig für mich, es ist meine Vermutung, dass IIS die Anfrage ablehnt, um bösartige oder bösartige Anfragen zu verhindern schlechte Dinge wie DOS-Attacken auf einen Server zu tun. Der Cassini-Entwicklungsserver benötigt diesen Schutz nicht und daher funktioniert das lokale Debugging ohne IIS problemlos. – AnthonyWJones
Ich habe die folgenden Char Header [255]; \t Memset (Header, 0,255); \t sprintf (Header, "Content-Length:% d", buffSize); \t wenn (!Httpsendrequest (httprequest, headers, strlen (Header), Buff, BUFFSIZE)) aber noch Httpsendrequest mit Fehler nicht verlässt sehr schnell – CnativeFreak