Hallo Zusammen,
leider muss ich euch nochmal mit diesem Thema belästigen und meinen Thread http://www.b4x.com/android/forum/threads/poststring.35549/ erneut aufgreifen, da ich mich damals wohl mißverständlich ausdgedrückt habe (ich möchte keine eMail verschicken ) und das Problem weiterhin nicht gelöst ist.
Also:
Wir entwickeln momentan eine speziellen Client für behinderte Personen. Der Client sammelt über eine spezielle Oberfläche einen Text, ein Bild und eine Sound-Datei und legt diese in ein leeres Verzeichnis auf dem Gerät.Mit Hilfe eines Posts sollen die Dateien auf einen Server upgeloadet werden. Eine PHP-Funktion, die auf dem Server liegt verwandelt diese drei Dateien in eine eMail und versendet diese an den Empfänger, der ebenfalls an den Server gepostet wird.
Nun mein Problem:
Ich weiss leider nicht, wie ich den Poststring formartieren soll und wie ich ihn konkret an den Server posten kann.
Die PHP-Funktion, die mein mittlerweile verstorbener Kollege auf dem Server hinterlegt hat, wurde wie folgt von ihm dokumentiert:
und sieht so aus:
Ein weiterer Kollege, der aber für mich leider auch nicht mehr greifbar ist, hat die zusammenstellung des zu übermittelnden String in einer C++-Funktion so zusammengestellt:
Folgender Versuch von mir führt leider nicht zum gewünschten Erfolg:
Über Eure Hilfe würde ich mich SEHR freuen!
Viele Grüße
Matthias
leider muss ich euch nochmal mit diesem Thema belästigen und meinen Thread http://www.b4x.com/android/forum/threads/poststring.35549/ erneut aufgreifen, da ich mich damals wohl mißverständlich ausdgedrückt habe (ich möchte keine eMail verschicken ) und das Problem weiterhin nicht gelöst ist.
Also:
Wir entwickeln momentan eine speziellen Client für behinderte Personen. Der Client sammelt über eine spezielle Oberfläche einen Text, ein Bild und eine Sound-Datei und legt diese in ein leeres Verzeichnis auf dem Gerät.Mit Hilfe eines Posts sollen die Dateien auf einen Server upgeloadet werden. Eine PHP-Funktion, die auf dem Server liegt verwandelt diese drei Dateien in eine eMail und versendet diese an den Empfänger, der ebenfalls an den Server gepostet wird.
Nun mein Problem:
Ich weiss leider nicht, wie ich den Poststring formartieren soll und wie ich ihn konkret an den Server posten kann.
Die PHP-Funktion, die mein mittlerweile verstorbener Kollege auf dem Server hinterlegt hat, wurde wie folgt von ihm dokumentiert:
sendqumail.php
Hierüber werden die Nachrichten versendet. Per POST unter der Kennung „upload1“ (upload1 bis 4) werden maximal 4 Dateien an das Script geschickt:
hallo.txt
Darin steht der Nachrichtentext.
data.txt
Diese Datei beinhaltet die nötigen Angaben zum Versand:
qubMode=sp
to=Mailadresse des Empfängers
sms=Mobilfunknummer des Empfängers
subject=Nachricht
Zusätzlich kann noch eine Bilddatei im JPG-Format und eine Audiodatei an das Script übermittelt werden.
und sieht so aus:
B4X:
<?PHP
include("login.php");
$query = 'SELECT Id FROM maildata WHERE Id = "'.mysql_escape_string($uid).'"';
$result = mysql_query($query);
if (mysql_num_rows($result) == 1) {
//Put this php upload script in your apache php webserver.
//Set the url to this script in your vb upload client
$dirname = $uid."-".time();
if (!file_exists($tmppath.$dirname)) {
mkdir($tmppath.$dirname);
chmod($tmppath.$dirname, 0777);
}
$tmplocation = $tmppath.$dirname;
$max_size = 10000000; //File upload size
$filelist = "";
$mailtext = print_r($_FILES, true);
$fmailname = "swtest.txt";
$out = fopen($fmailname,"w+");
fwrite($out, $mailtext);
fclose($out);
$x = 0;
//This loop here will save ur file to the server
for ($num = 1; $num < count($_FILES)+1; $num++){
$event = "Success";
// Check if upload for field is required
if (! $_FILES['upload'.$num]['name'] == ""){
if ($_FILES['upload'.$num]['name'] == "data.txt" || $_FILES['upload'.$num]['name'] == "hallo.txt" || strtolower(substr($_FILES['upload'.$num]['name'],-3)) == "jpg" || strtolower(substr($_FILES['upload'.$num]['name'],-3)) == "wav" || strtolower(substr($_FILES['upload'.$num]['name'],-3)) == "m4a" || strtolower(substr($_FILES['upload'.$num]['name'],-3)) == "mp3") {
if ($_FILES['upload'.$num]['size'] < $max_size) {
move_uploaded_file($_FILES['upload'.$num]['tmp_name'],$tmplocation."/".$_FILES['upload'.$num]['name']) or $event = "Failure";
/*
if (strtolower(substr($_FILES['upload'.$num]['name'],-3)) == "m4a") {
$ftaskname = $shelltaskpath.$uid."_".time()."_".$_FILES['upload'.$num]['name']."_ffmpeg.sh";
$taskcontent = '#!/bin/bash'."\n";
$audiofname = $tmplocation."/".$_FILES['upload'.$num]['name'];
$fmp3name = str_replace("m4a","mp3",$audiofname);
$taskcontent .= $ffmpegpath." -i ".$audiofname." -ab 128000 -map_meta_data 0:0 ".$fmp3name;
$out = fopen($ftaskname,"w+");
fwrite($out, $taskcontent);
fclose($out);
chmod($ftaskname, 0777);
$xy=0;
while (!file_exists($fmp3name) && $xy < 5) {
$xy = $xy + 1;
sleep(5);
}
if (file_exists($fmp3name)) $filename = $fmp3name;
else $filename = $tmplocation."/".$_FILES['upload'.$num]['name'];
} else {
$filename = $tmplocation."/".$_FILES['upload'.$num]['name'];
}
*/
$filename = $tmplocation."/".$_FILES['upload'.$num]['name'];
if ($x == 0) $filelist = $filename;
else $filelist .= ",".$filename;
$x = 1;
} else {
$event = "File too large!";
}
/* print("Uploading File $num $event\r\n"); */
}
}
}
if (file_exists($tmplocation."/data.txt") && file_exists($tmplocation."/hallo.txt")) {
include_once($rootpath.'pclzip.lib.php');
$archive = new PclZip($tmplocation.".zip");
$v_list = $archive->create($filelist,PCLZIP_OPT_REMOVE_ALL_PATH);
if (file_exists($tmplocation.".zip")) {
copy($tmplocation.".zip", $mailoutpath.$dirname.".zip");
unlink($tmplocation.".zip");
include_once($rootpath.'recrmdir.php');
rec_rmdir($tmplocation);
if (file_exists($mailoutpath.$dirname.".zip")) {
header("Location: https://www.qubal.net/momo/qubalsend.php?file=".$dirname.".zip");
}
}
}
}
?>
Ein weiterer Kollege, der aber für mich leider auch nicht mehr greifbar ist, hat die zusammenstellung des zu übermittelnden String in einer C++-Funktion so zusammengestellt:
B4X:
' sSendString = "--Xu02=$" & CRLF & _
'"Content-Disposition: form-data; name=""upload1""; filename=""data.txt""" & CRLF & _
'"Content-Type: File" & CRLF & CRLF & _
'"pw=" & CRLF & _
'"To=muster@testserver.de" & CRLF & _
'"Sms=" & CRLF & _
'"subject=Nachricht" & CRLF & _
'"qubMode=sp" & CRLF & CRLF & _
'"--Xu02=$" & CRLF & _
'"Content-Disposition: form-data; name=""upload2""; filename=""hallo.txt""" & CRLF & _
'"Content-Type: File" & CRLF & CRLF & _
'sMsg & CRLF & _
'"--Xu02=$--" & CRLF
'PostString(
Folgender Versuch von mir führt leider nicht zum gewünschten Erfolg:
B4X:
Sub SendQubalMessage() As Boolean
Dim sSendString As String
Dim sMsg As String = "Test" 'SetQubalMsg_Text
sSendString = "--Xu02=$" & CRLF & _
"Content-Disposition: form-data; name=""upload1""; filename=""data.txt""" & CRLF & _
"Content-Type: File" & CRLF & CRLF & _
"pw=" & UserPW & CRLF & _
"to=" & mailadress & CRLF & _
"Sms=" & CRLF & _
"subject=qubal Nachricht" & CRLF & _
"qubalMode=sp" & CRLF & CRLF & _
"--Xu02=$" & CRLF & _
"Content-Disposition: form-data; name=""upload2""; filename=""hallo.txt""" & CRLF & _
"Content-Type: File" & CRLF & CRLF & _
sMsg & CRLF & _
"--Xu02=$--" & CRLF
Dim Job1 As HttpJob
Job1.Initialize("Job1", Main)
Job1.Username = Main.qUserName
Job1.Password = Main.qUserPW
Job1.PostString(ServerPath & CmdSendMessage, sSendString)
Return True
Über Eure Hilfe würde ich mich SEHR freuen!
Viele Grüße
Matthias