Datei per Http versenden



  • Ich habe schon viel gesucht und leider keine wirkliche information gefunde wie ich eine datei an ein html formular versenden kann.

    Zum versenden von post/get daten und empfangen dergleichen hab ich das aus dem faq
    entnommen.

    CString CWowprofilerDlg::getHtmlSource(CString url)
    {      
       CString somecode, s;      
       CInternetSession session;
       CInternetFile* file = NULL;
    
       try
       {      
          file = (CInternetFile*) session.OpenURL(url,1, INTERNET_FLAG_TRANSFER_ASCII | INTERNET_FLAG_DONT_CACHE |
    		INTERNET_FLAG_RELOAD); 
       }
       catch (CInternetException* m_pException)
       {      
          file = NULL;  
          m_pException->Delete();
       }
    
       if(file)
       {      
          while (file->ReadString(somecode) != NULL)  
          {
             s = s + somecode;
          }
       }
    
       file->Close();
       return s; 
    }
    

    Hoffe mir kann jemand erklären wie ich nun post- multipart daten versenden kann.

    MFG Hounddog



  • Bist du Server ?



  • Ich verstehe deine server frage nicht.

    Ich möcht halt einfach eine datei aus meinem programm heraus an ein webformular senden.

    MFG Hounddog



  • Ich hab nun das andere beispiel verwendet... das obere ist ja nur um get daten zu verwenden...

    CString CWowprofilerDlg::getHtmlSource(CString url)
    {
    	CString somecode, s;
    	//CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded");
    	CString strHeaders = _T("Content-Type: multipart/form-data, boundary=Boundary");  
    	// URL-encoded form variables -  
    	// name = "John Doe", userid = "hithere", other = "P&Q"  
    	CString strFormData = _T("test=user");  
    
    	CInternetSession session;  
    	CHttpConnection* pConnection = session.GetHttpConnection(_T("localhost"));  
    	   CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T("wowtest/index.php"), NULL, 1, NULL, NULL, INTERNET_FLAG_TRANSFER_ASCII | INTERNET_FLAG_DONT_CACHE |INTERNET_FLAG_RELOAD);  
    
    	   BOOL result = pFile->SendRequest(strHeaders, (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
    
    	if(pFile)
    	{      
          while (pFile->ReadString(somecode) != NULL)  
          {
             s = s + somecode;
          }
       } 
    return s;
    }
    

    Hier hab ich aber immer noch nicht rausgefunden wie ich eine datei an das entsprechende formular senden kann....

    CString strHeaders = _T("Content-Type: multipart/form-data, boundary=Boundary");
    

    Ist ja hoffentlich schonmal richtig.

    Ich habe immernoch die hoffnung das mir jemand erklären kann wie ich nun eine datei hinsenden kann.

    Um genau zu sein moechte ich

    Username(POST)
    Passwort(POST)

    datei.lua

    versenden

    MFG Hounddog



  • Was ich gemeint habe ist!

    Ist das Programm was du schreibst ein Server Programm also wo ein Client über HTTP zugriff hat und wenn er auf dem entsprechenden URL ist wielst du die Datei im schicken!?

    So habe ich das bisher verstanden

    ich habe das bisher noch nie mit CHttpConnection gemacht
    aber vieleicht hast du ja nur die Header nicht ausgefüllt

    PUT/%s HTTP/1.1
    Accept:
    Referer:
    Accept Language
    Accept Encoding:
    User Agent:
    Host:
    Connection:



  • Ich weis langsam nichtmehr wie ich das erklären soll 😕

    Ich habe eine Applikation. Aus dieser applikation heraus möchte ich einfach
    Post daten wie username und passwort schicken. Dazu soll aber auch eine Datei an eine webseite uebermittelt werden...

    Hier quasi das formular wohin ich die daten übermitteln möchte...

    <form ENCTYPE="multipart/form-data" method="POST">
    Loginname:
      <input type="text" name="login" value="<? echo $_POST['login'];?>">
    Passwort:
      <input type="password" name="password" value="<? echo $_POST['password'];?>">
    Datei:<
      <input type="file" accept="*.lua" name="<?php echo $filefield; ?>">
      <input type="submit" value="Eintragen">
    </form>
    

    MFG Hounddog



  • Das ist sicher nicht in wenigen Sätzen erklärt.
    2 Möglichkeiten:
    Du schaust bei codegur/codeproject ob es bereits eine Klasse gibt (gibts sicher)
    oder du installiert dir eine Webserver, erstellst dir eine seite wo daten gesendet werden und schaust anhand der Rohdaten wie man den Header und Content aufbaut.

    Das beste ist jedoch das du die RFC ließt.



  • http://www.codeproject.com/library/lyoulhttpclient.asp

    Habe hier dann eine ausfuehrliche anleitung nochmal gefunden.
    Vielen dank fuer die hilfe soweit ich hoffe mal das es nun klappt 🙂

    MFG Hounddog


Log in to reply