Bild Via Inet Control An Http (post / Multipart) Senden

enricohofmann

Grünschnabel
hallo

ich möchte gerne vie http post methode (multipart encrypted) eine bild an den webserver senden.

wie muss ich da vorgehen, ich habe nur den pfad des bildes.

das serverseitige ist mir klar, allerdings muss ich wissen wie ich es clientseitgig lösen kann.

ne socketverbindung und dann http kommuniktion wäre nen bissel zu aufwendig ;)

vielen dank im voraus für eine aussagekräftige aussage, fals dies zu aufwenig sein sollte, bitte erklären wie ich via ftp eine datei uploaden kann.

mfg enrico

ps: ne statusanzeige wieviel schon hochgeladen wäre natürlich auch noch schön aber erstmal nicht zwingend notwendig.
 
OK HABE DIE LÖSUNG GEFUNDEN ;)

vb code:

Option Explicit
Private Sub Command1_Click()
Dim sFileName As String
Dim sScriptURL As String, sScriptHdrs As String, sScriptData As String
sFileName = "D:\seite1.jpg"
sScriptURL = "http://domain.de/module/fileupload/index.php"
sScriptHdrs = "Content-Type: multipart/form-data; boundary=---------------------------7d432c37100238"
Call BuildData(sScriptData, sFileName)
With Inet1
Label1.Caption = "DOWNLOAD GESTARTET"
.Execute sScriptURL, "POST", sScriptData, sScriptHdrs
Do While .StillExecuting
DoEvents
Loop
Label1.Caption = "DOWNLOAD FERTIG"
End With
End Sub
Private Sub BuildData(ByRef sRefData As String, ByVal sFileName As String)
Dim intFreeFile As Integer, strBuffer As String
Const sDblQts As String = """"
If Dir(sFileName, vbNormal) <> vbNullString Then
intFreeFile = FreeFile
Open sFileName For Binary As intFreeFile
strBuffer = Space(LOF(intFreeFile))
Get #intFreeFile, 1, strBuffer
Close intFreeFile
sRefData = vbNullString
sRefData = sRefData & "Content-Type: multipart/form-data; boundary=---------------------------7d432c37100238" & vbCrLf
sRefData = sRefData & "-----------------------------7d432c37100238" & vbCrLf
sRefData = sRefData & "Content-Disposition: form-data; name=" & sDblQts & "submit" & sDblQts & vbCrLf & vbCrLf
sRefData = sRefData & "Upload" & vbCrLf
sRefData = sRefData & "-----------------------------7d432c37100238" & vbCrLf
sRefData = sRefData & "Content-Disposition: form-data; name=" & sDblQts & "filename" & sDblQts & "; filename=" & sDblQts & sFileName & sDblQts & vbCrLf
sRefData = sRefData & "Content-Type: application/x-zip-compressed" & vbCrLf & vbCrLf
sRefData = sRefData & strBuffer & vbCrLf
sRefData = sRefData & "-----------------------------7d432c37100238--"
End If
End Sub

so müsste dann in kurzform der php code aussehen wobei ich den noch ausbauen würde.

<?
//INITIALISEREN DER BENÖTIGTEN PROGRAMMDATEIEN
//FOLGENDE ZEILE IST MEIN FRAMEWORK NICHT RELEVANT FÜR DEN EINZELNEN
include($_SERVER['DOCUMENT_ROOT']."/global/start.php");

$uploaddir = $_SERVER['DOCUMENT_ROOT']."/FILES/";
/*
FEHLERCODES
===============================================================
0 Alles OK (DATEI GESPEICHERT) YES
10 Der Dateiname konnte nicht gespeichert werden NO
13 ES wurden keine Daten übermittelt NO
===============================================================
*/

if(trim($_POST[filename]) == "") die("13;Es wurden keine Daten übermittelt.");
else
{
$dateiname = split("\.",$_FILES['filename']['name'],2);
//NICHT WUNDERN HABE HIER NE EINGENE KLASSE, MÜSSTET HALT SELBST DANN DEN CONNECT ZUR DB BAUEN UND DANN DEN SQL MIT mysql_query NUR ICH WOLLTE DIE DATEIEN DANN NUMERISCH ABSPEICHERN ;)
$fileid = $db_crm->insert("INSERT INTO fileupload SET datum = NOW(), del = '1', filename = '".$_FILES['filename']['name']."'");
move_uploaded_file($_FILES['filename']['tmp_name'], $uploaddir . $fileid .".". $dateiname[1]);
die("0;Die Datei wurde erfolgreich gespeicher");
}
?>


das ganze ist durchaus noch ausbau fähig, ich baue da jetzt noch nen ipgebundenes sessionmanagment ein, da ich bei dem start des programms sowieso die userdaten im internet prüfe.

mfg gigo

ps. aber vb scheint nicht schwer zu sein, ist erst mein zweiter tag ;)
 
Zurück