Hi Zusammen,
ich habe derzeit ein etwas größeres Problem:
Gemeinsam mit einem Kollegen entwickle ich derzeit einen speziellen Messenger für behinderte Menschen.
Derzeit arbeite ich an der Funktion, die verschiedene Dateien (Textfile, Soundfile, Picturefile und Controlfile) an den Server übermitteln soll. Der Server wandelt diese Dateien dann zu einer eMail um und versendet diese.
Bedauerlicherweise ist der Kollege kürzlich unerwartet verstorben.
Als Anleitung zu der Funktion hat er dieses geschrieben:
Eine entsprechende Funktion sieht in C++ etwa so aus:
Hier die PHP-Funktion des Servers:
Nun muss ich eine entsprechende Funktion für B4A erstellen und komme nicht wirklich weiter. Könnt ihr mir bitte helfen?
Den Empfang von Infos des Servers habe ich mit
realisiert.
Viele Grüße
Matthias
ich habe derzeit ein etwas größeres Problem:
Gemeinsam mit einem Kollegen entwickle ich derzeit einen speziellen Messenger für behinderte Menschen.
Derzeit arbeite ich an der Funktion, die verschiedene Dateien (Textfile, Soundfile, Picturefile und Controlfile) an den Server übermitteln soll. Der Server wandelt diese Dateien dann zu einer eMail um und versendet diese.
Bedauerlicherweise ist der Kollege kürzlich unerwartet verstorben.
Als Anleitung zu der Funktion hat er dieses geschrieben:
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.
Eine entsprechende Funktion sieht in C++ etwa so aus:
B4X:
' sSendString = "--Xu02=$" & CRLF & _
'"Content-Disposition: form-data; name=""upload1""; filename=""data.txt""" & CRLF & _
'"Content-Type: File" & CRLF & CRLF & _
'"pw=" & CRLF & _
'"[email protected]" & 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(
Hier die PHP-Funktion des Servers:
PHP:
<?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");
}
}
}
}
?>
Nun muss ich eine entsprechende Funktion für B4A erstellen und komme nicht wirklich weiter. Könnt ihr mir bitte helfen?
Den Empfang von Infos des Servers habe ich mit
B4X:
Sub SendHTTPqubalRequest(reqNr As Int, Cmd As String)
Dim HC As HttpClient
Dim req2 As HttpRequest
HC.Initialize("hc")
req2.InitializeGet(qubal.ServerPath & Cmd)
HC.ExecuteCredentials(req2, reqNr, User, PW)
Viele Grüße
Matthias