Seite 1 von 2

[gelöst][Qt4] File versenden mit QHttp::post(...)

Verfasst: 21. Oktober 2005 12:04
von macman
Mahlzeit,

hat schon jemand erfolgreich ein File mit einem QHttp::post() Request versendet? Laut meinem Qt-Programm scheint es zu gehen, zumindest bekomme ich einen 200er Return-Code von meinem Webserver. In den Apache-Logs ist auch nichts Auffälliges, mein PHP-Skript wird auch aufgerufen, nur meint das eben, es wären keine Daten gepostet worden.

Die Doku ist da etwas mißverständlich. Wenn ich z.B. http->post ( myURI, myByteArray, myLogfile ) ausführe, dann werden die Daten vom Bytearray ins Logfile geschrieben. Soll das so sein?

[edit]OK, das war schon mal Blödsinn, was ich da geschrieben habe. Gesendet werden soll das ByteArray und die Antwort vom Server landet im Logfile. Das passt auch so. Aus welchen Gründen auch immer, wurde mir anfangs das zurück geschickt was ich gesendet habe.[/edit]

Trotzdem bekommt mein PHP-Skript noch keine brauchbaren Daten :(

Re: [Qt4] File versenden mit QHttp::post(...)

Verfasst: 21. Oktober 2005 14:40
von macman
Hat sich erledigt, nach dem ich QHttpRequestHeader benutzt und den Fehler im PHP-Skript behoben habe :)

Verfasst: 7. Juni 2006 17:07
von patrik08
Herrlich wahere wen ich auch was davon sehe :D ... von diesem
QHttpRequestHeader ....

komisch dass niemand ein paar zeile unter "Snippets, Tipps & Tricks" gepostet hat.... wie so ein upload geht... mit qt4 Wir leben alle vom QT Opensource teil....

vielleicht ist der autor vom neuen QT4 buch da fundig ... und du bekommst dein namen im buch!!



anfang php file bei ankommen habe ich eine phpinfo()
und print_r($_POST);

PHP5

Code: Alles auswählen

/* anfang file #ob_start(); */

$puffermg=ob_get_contents();
while (@ob_end_clean());
file_put_contents("lastaction.html",$puffermg);
print($puffermg);
exit;

Doch ich bekomme nur $_SERVER["variablenamen"] herein und
keine $_POST[sssss]

QT4

Code: Alles auswählen

 QUrl url(weburlpostget);
    /* HEADER ONLY _SERVER["HTTP_PASSWORD"]   */
    QHttpRequestHeader header("POST",url.path(), 1, 1);
    header.setValue("Host",url.host());
    header.setContentType("multipart/form-data");
    header.setValue("username", "afaf346afa");
    header.setValue("password", "sg233646fg");
    header.setValue("pirlo", "dsgdsdgf315125dsgsdg/");
    header.setValue("afafaff", "dsgdsd35215asfagdsgsdg/");
    header.setValue("afafafa", "dsgdsa525325sfadgdsgsdg/");
    
    QByteArray *bytes = new QByteArray();
    bytes->append("-----------------------------125282808721657\n");
    bytes->append("Content-Disposition: form-data; name=\"\"; ");
    bytes->append("filename=\"kommnimmmich.txt\"\n");
    bytes->append("Content-length: 1");
    bytes->append("\nContent-Type: text/plain\n\n"); 
    bytes->append("hoi."); 
    http_0 = new QHttp(this);
    http_0->setHost(url.host());
    http_0->post(url.path(),bytes);
    httpGetId = http_0->request(header,bytes,0);
    connect(http_0, SIGNAL(done(bool)), this, SLOT(FinishStream()));

Verfasst: 8. Juni 2006 07:26
von macman
Ok ok, ich muß aber erstmal die Dateien wieder finden, dann teste ich es noch mal, und dann packe ich es zu den Snippets. Weiß aber noch nicht, ob ich heute dazu komme.

Verfasst: 8. Juni 2006 18:36
von patrik08
macman hat geschrieben:Ok ok, ich muß aber erstmal die Dateien wieder finden, dann teste ich es noch mal, und dann packe ich es zu den Snippets. Weiß aber noch nicht, ob ich heute dazu komme.
Das ist ein wort...... Super...

Wenn dan dass buch http://www.amazon.de/exec/obidos/ASIN/3 ... 39-1476007 raus kommt 1° oder 2° auflage mit deinem namen ... dann ist eine runde Faellig...

dass Problem bei diese http post ist einfach .. die header, und die muss man korrekt hinbekommen nach diesem rtf xxx standard sonst kommen die variable als $_SERVER["HTTP_AFAFAFF"] an und um diese Post richtig zu bekommen muss man stunden lang mit network sniffer & browser rummwuergen damit man es hin bekommt ....

Von PHP seite kann ich nur beobachten wass hineinkommt...

Code: Alles auswählen

<?php
ob_start();  /* alles abfangen was echo & Print ist */

/* post action upload & Variablen */
/* html form */

?> <pre>Array 1
<?php
print_r($DEFINITIONFILE);
?> </pre>
<pre> Array _POST 
<?php
print_r($_POST);
?> </pre>
<pre>Array _GET
<?php
print_r($_GET);
?> </pre>
<pre>Array _FILE
<?php
print_r($_FILE);
?> </pre><?php
$puffermg=ob_get_contents();
while (@ob_end_clean());
file_put_contents("lastaction.html",$puffermg);  /* im file lesen wass passiert ist*/
print($puffermg);
exit;
?>
Oder voll wie ich es mache..... mit eine phpinfo(); & PHP5 dann ist alles sichtbar.... wass fuer post hineinkommen.....

Code: Alles auswählen


<?php
ob_start();
set_time_limit(60 * 2);
if(!defined('QTDEST_DIR_FILE')) {
   define('QTDEST_DIR_FILE',dirname(__FILE__).'/qtdir/');
}

/* check post pass ..... */
if ($_SERVER['REQUEST_METHOD'] == "POST") {
header("Content-Type: text/plain");
if ($_POST['action'] == "beamup") {
$TMPFILELOCATION=$_FILES['qtfile']['tmp_name'];
$ENDFILENAME=$_FILES['qtfile']['name'];
$TMPFILETYPE=$_FILES['qtfile']['type'];

if (is_file($TMPFILELOCATION)) {
/* move file e check type mime .... */
$DEFINITIONFILE=Pulitzer_Mime::Put_To_Box($TMPFILELOCATION,$ENDFILENAME);
}
print_r($DEFINITIONFILE);
print_r($_POST);
print_r($_GET);
$puffermg=ob_get_contents();
while (@ob_end_clean());
file_put_contents("lastaction.html",$puffermg);
print($puffermg);
exit;
}
}
/* check post pass ..... */
print_r($_POST);
print_r($_GET);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
	<title>QT Upload contest HTTP _POST</title>
</head>

<body>

<form action="tools.php" method="post" enctype="multipart/form-data" name="onlyclient" id="onlyclient">
<input type="hidden" name="action" value="beamup">
Username:<br/><input type="text" name="username"><br/><br/>
Password:<br/><input type="password" name="password"><br/><br/>
Your File:<BR><input type=file name=qtfile><BR><BR>
<input type=submit name=submit value="Upload">
</form> 

</body>
</html>
<?php
phpinfo();

///Pulitzer_Mime::Get($file);
class Pulitzer_Mime {
public static function Get($src) {
        $extension = substr($src,strrpos($src,".")+1);
        
        switch ($extension) {
		    case "rtf";
			return "text/rtf";
		    case "sxw":
			case "odt":
			case "ods":
			case "sxc":
			return "application/vnd.sun.xml.writer";
			case "pdf":
			return "application/pdf";
            case "gif":
            return "image/gif";
            case "jpg":
            case "jpeg":
            return "image/jpeg";
            case "png":
            return "image/png";
            case "css":
            return "text/css";
            case "xml":
            case "xsl":
            case "xsd":
            case "rng":
			case "eps":
			case "ps":
			case "zip":
			case "sit":
			case "gz":
			case "tar":
			case "mp3":
            return "text/xml";
            case "js":
            return "text/javascript";
            case "html":
            case "htm":
            case "xhtml":
            return "text/html";
            case "txt":
            return "text/plain";
            
            default:
            if (file_exists($src)) {
                $m =  `file -b $src`;
                return $m;
            } else {
                return "text/unknow";
            }
        }
        
        
    }
	
public static function unix_file_size($file) {
/////  return user /// ls -l file  | awk '{print $3}' ////
    $kb = 1024;         // Kilobyte
    $mb = 1024 * $kb;   // Megabyte
    $gb = 1024 * $mb;   // Gigabyte
    $tb = 1024 * $gb;   // Terabyte
  $size = filesize($file);
  if ( $size == 0)
   $size = exec("ls -l $file | awk '{print $5}'");
   if($size < $kb) {
        return $size." B";
    }
    else if($size < $mb) {
        return round($size/$kb,2)." KB";
    }
    else if($size < $gb) {
        return round($size/$mb,2)." MB";
    }
    else if($size < $tb) {
        return round($size/$gb,2)." GB";
    }
    else {
        return round($size/$tb,2)." TB";
    }
  return $size;
}
	
	
	
public static function Put_To_Box($src,$name) {
$name=str_replace("%20", "_", rawurlencode($name));
$name=str_replace("%", "", $name);
$DestFileGoTo=QTDEST_DIR_FILE.$name;
if (is_file($DestFileGoTo)) {
@unlink($DestFileGoTo);
}
if  (!move_uploaded_file($src,$DestFileGoTo))  {
return false;
} else {
@chmod($DestFileGoTo,0664);
		if (file_exists($DestFileGoTo)) {
		$ma =  `file -b $DestFileGoTo`;
		}
$m = preg_replace('=([[:space:]]{2,})=im', ' ', trim($ma, " \n."));
$umime=self::Get($DestFileGoTo);
$proprieti['type']=$umime;
$proprieti['unixtype']=$m;
$proprieti['name']=$name;
$proprieti['source']=$DestFileGoTo;
$proprieti['size']=self::unix_file_size($DestFileGoTo);
$proprieti['checkone']=md5($umime);
return $proprieti;
}
}

}


/* anfang file #ob_start(); */

$puffermg=ob_get_contents();
while (@ob_end_clean());
file_put_contents("lastaction.html",$puffermg);
print($puffermg);
exit;
?>





Ich habe bereist solche post mit php gemacht & libcurl.....
Aber mit qt is es eben nochmals anders ... libcurl problemen zwichen os...

in etwa....

Code: Alles auswählen

$Ffields=array(
"__EVENTTARGET" => "repLang:_ct0:lbLang",
"__EVENTARGUMENT" => 'repLang$_ct0$lbLang',
"__VIEWSTATE" => $this->VIEWSTATE,   /* asp secure nummer session read ... and transfer to all page. on read.. */
"dlg1:ctrl1:tbKunde" => "252525",
"dlg1:ctrl1:tbKuerzel" => "2352352",
"dlg1:ctrl1:PasswordTexBox" => "ygygsgsg",
"dlg1:ctrl1:cbPersistentLogin" => "on",
"dlg1:ctrl1:Btn_Login" => "Anmelden");

       $ch = curl_init();
       curl_setopt ($ch, CURLOPT_URL, $url);
	   curl_setopt ($ch, CURLOPT_POST,true);
       curl_setopt ($ch, CURLOPT_USERAGENT, $this->Set_Agent());
       curl_setopt($ch,  CURLOPT_COOKIEJAR, $this->Workdir.'/also_cookie.txt');
	   curl_setopt($ch,  CURLOPT_COOKIEFILE, $this->Workdir.'/also_cookie.txt');
       curl_setopt ($ch, CURLOPT_HEADER, 0);
	   curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($Ffields));
	   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
       curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
       curl_setopt ($ch, CURLOPT_TIMEOUT, 12);
       $resultxml = curl_exec ($ch)

Verfasst: 8. Juni 2006 18:44
von macman
Du kennst Firefox und LiveHTTPHeaders?

Verfasst: 8. Juni 2006 20:09
von patrik08
Ich kenne nur dsniff....

http://packages.debian.org/unstable/net/dsniff.html
da mein router lan einen debian sarge ist...

ich mache dann im terminal # urlsnarf [enter] mit option port 80
und sehe jeden traffic raus und rein.... auch post upload chat alles...

Am abend 18'00 wenn meine kinder zuhause sind geht ein cron job los bis 22'00 am morgen kann ich greppen im logfile wo sie wahren ... und wie sie fluchen beim chatten.... und kann dabei mein wortschatz vergroessern .. und begreifen vorallem wass sie reden!

Verfasst: 9. Juni 2006 02:28
von patrik08
Ich habe noch fuer 5 stunden lang ein anlauf genommen befor ich alles mit libcurl post mache
habe http://livehttpheaders.mozdev.org/ installiert und die header gesetzt wie sie sein solte.... dass einzige richtige was ankommt ist
ansonsten keine _FILE oder _POST variablen... paare


_SERVER["HTTP_HOST"] ppk.go
_SERVER["HTTP_USER_AGENT"] QT4 4.1.3 QHttp troll method 1
_SERVER["HTTP_ACCEPT"] text/plain
_SERVER["HTTP_ACCEPT_LANGUAGE"] en-us
_SERVER["HTTP_ACCEPT_ENCODING"] gzip,deflate
_SERVER["HTTP_ACCEPT_CHARSET"] ISO-8859-1,utf-8;q=0.7,*;q=0.7
_SERVER["HTTP_KEEP_ALIVE"] 300
_SERVER["HTTP_CONNECTION"] keep-alive
_SERVER["HTTP_REFERER"] http://ppk.go/qt/tools.php
_SERVER["CONTENT_TYPE"] multipart/form-data; boundary=---------------------------114781149811467
_SERVER["PATH"] /usr/local/bin:/usr/bin:/bin
_SERVER["SERVER_SIGNATURE"] <address>Apache/2.0.54 (Debian GNU/Linux) DAV/2 PHP/5.0.4-0.9sarge1 mod_perl/1.999.21 Perl/v5.8.4 Server at ppk.go Port 80</address>
_SERVER["SERVER_SOFTWARE"] Apache/2.0.54 (Debian GNU/Linux) DAV/2 PHP/5.0.4-0.9sarge1 mod_perl/1.999.21 Perl/v5.8.4
_SERVER["SERVER_NAME"] ppk.go
_SERVER["SERVER_ADDR"] 192.168.1.32
_SERVER["SERVER_PORT"] 80
_SERVER["REMOTE_ADDR"] 192.168.1.34
_SERVER["DOCUMENT_ROOT"] /home/ppk/www/ppk.go/
_SERVER["SERVER_ADMIN"] [no address given]
_SERVER["SCRIPT_FILENAME"] /home/ppk/www/ppk.go/qt/tools.php
_SERVER["REMOTE_PORT"] 4423
_SERVER["GATEWAY_INTERFACE"] CGI/1.1
_SERVER["SERVER_PROTOCOL"] HTTP/1.1
_SERVER["REQUEST_METHOD"] POST
_SERVER["QUERY_STRING"] no value
_SERVER["REQUEST_URI"] /qt/tools.php
_SERVER["SCRIPT_NAME"] /qt/tools.php
_SERVER["PHP_SELF"] /qt/tools.php
_SERVER["argv"]


Code: Alles auswählen


void Gui_Upload::BeginnJob()
{
    bool method_1 = true;
    QString openFilesPath = "/";
    QDateTime timer2( QDateTime::currentDateTime() ); 
    const uint MAXWAITING = timer2.addSecs(8).toTime_t(); 
    const QString POSTID = QString( "11478%1\r\n" ).arg( QString::number(MAXWAITING) );
    const QString POSTIDEND = QString( "11478%1--\r\n" ).arg( QString::number(MAXWAITING) );
    qDebug() << "### POSTID " << POSTID;
	QString us = username->text(); 
    QString pa = pass->text(); 
    QString posturl = "http://ppk.go/qt/tools.php?id=test";
    
    if (us.size() < 1 or pa.size() < 1) {
       QMessageBox::information(this, tr("HTTP"),tr("User Name or Pass not set!")); 
    return;        
    }
    qDebug() << "### user " << us;
    qDebug() << "### pass " << pa;
    
    pushButton->setEnabled(false);
    
    QString fileName = QFileDialog::getOpenFileName(this,tr("OpenFile"),openFilesPath,tr("All Files (*);;Text Files (*.txt)"));
    if (!fileName.isEmpty()) {
        qDebug() << "### fileName " << fileName; 
    }
    
    
    /* dear qt set and splitt the url self */
    QUrl url(posturl);
    qDebug() << "### host " << url.host();
    qDebug() << "### path " << url.path();
    QHttpRequestHeader header("POST",url.path());
    header.setValue("Host",url.host()); 
    header.setValue("User-Agent", "QT4 4.1.3 QHttp troll method 1"); 
    header.setValue("Accept", "text/plain");
    header.setValue("Accept-Language", "en-us");
    header.setValue("Accept-Encoding", "gzip,deflate");
    header.setValue("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
    header.setValue("Keep-Alive", "300");
    header.setValue("Connection", "keep-alive");
    header.setValue("Referer", "http://ppk.go/qt/tools.php");
    header.setValue("Content-Type", "multipart/form-data; boundary=---------------------------"+POSTID);
    
    QByteArray bytes;
    bytes.append("-----------------------------"+POSTID);
    bytes.append("Content-Disposition: form-data; name=\"action\"\r\n");
    bytes.append("beamup\r\n");
    bytes.append("-----------------------------"+POSTID);
    bytes.append("Content-Disposition: form-data; name=\"submit\"\r\n");
    bytes.append("Upload\r\n");
    bytes.append("-----------------------------"+POSTID);
    bytes.append("Content-Disposition: form-data; name=\"username\"\r\n");
    bytes.append(us+"\r\n");
    bytes.append("-----------------------------"+POSTID);
    bytes.append("Content-Disposition: form-data; name=\"password\"\r\n");
    bytes.append(pa+"\r\n");
    bytes.append("-----------------------------"+POSTID);
    bytes.append("Content-Disposition: form-data; name=\"unixtime\"\r\n");
    bytes.append(QString::number(MAXWAITING)+"\r\n");
   
      if (method_1) {
      qDebug() << "### METHOD 1 start  ++++++++++++++++++++ ";
      QString dateiName;
      file = new QFile();
      QFileInfo fileInfo(fileName);
      file->setFileName(fileName);
      dateiName = fileInfo.fileName(); 
    
                      bytes.append("-----------------------------"+POSTID);
                      bytes.append("Content-Disposition: form-data; name=\"qtfile\"; filename=\""+dateiName+"\"\n");
                      bytes.append("Content-length: " + QString::number(fileInfo.size()));
                      bytes.append("\nContent-Type: text/plain\n\n");
                      bytes.append(file->readAll()); 
          
          
          header.setValue("Content-Length", QString::number(fileInfo.size()));
    
    
       http_0 = new QHttp(url.host(),80,this);
       httpGetId = http_0->request(header, bytes);
       qDebug() << "### post httpGetId " << httpGetId;
       connect(http_0, SIGNAL(done(bool)), this, SLOT(FinishStream()));
       connect(http_0, SIGNAL(dataSendProgress(int,int)), this, SLOT(WriteNowProgress(int,int)));
       file->close();
       qDebug() << "### METHOD 1 end  ++++++++++++++++++++ ";
       
       }  else {
       
       qDebug() << "### METHOD 2 start  ++++++++++++++++++++ ";
       QUrl www(posturl);
       qDebug() << "### host " << www.host();
       qDebug() << "### path " << www.path();
      QHttp *http = new QHttp(this);
      http->setHost(www.host());
      QFile *file = new QFile(fileName, http);
      file->open(QIODevice::ReadOnly);
      connect(http, SIGNAL(done(bool)), this, SLOT(FinishStream()));
      http->post(www.path(), file);
       qDebug() << "### METHOD 2 end  ++++++++++++++++++++ ";
       }
       
       qDebug() << "### POSTID " << POSTID;
       qDebug() << "### POSTID " << POSTID;
       qDebug() << "### POSTID " << POSTID;
       qDebug() << "### POSTID " << POSTID;
       qDebug() << "### POSTID " << POSTID;
    
}

die 100 kb code ist bei svn http://ciz.ch/svnciz/_STATIC_LIBS_QT4/upload_test/

Verfasst: 9. Juni 2006 08:12
von macman
Es hat etwas gedauert, da sich irgendwas seit dem letzten Gebrauch geändert hatte, aber jetzt läuft mein Programm wieder. Ich habe es unter die Snippets gepackt.

Verfasst: 9. Juni 2006 17:46
von patrik08
macman hat geschrieben:Es hat etwas gedauert, da sich irgendwas seit dem letzten Gebrauch geändert hatte, aber jetzt läuft mein Programm wieder. Ich habe es unter die Snippets gepackt.
Ich danke dir sehr ..... aber ich habe es trozdem nicht hinbekommen und dass ...
macman hat geschrieben:da sich irgendwas seit dem letzten Gebrauch geändert hatte,t.
Hat mir ein wenig zu bedenken gemacht .... (dachte ich ... den naechsten php oder apache update alles wieder aender?) so habe ich einfach eine webdav http://www.webdav.org/ verbindung hingezaubert .... in 5 minuten...
damit kann ich besser schlafen wenn ich mal der server update oder verchiebe .... geht auch ueber port 80 ... aber wie ein lokal file.... nur die window mussen zusatz soft haben um disk zu mounten....

Code: Alles auswählen

void Setting_Gui::WebdavSetup()
{
label_webdav->setText(tr("Your OS Not Support Webdav"));
QStringList diskremote;
QString disksetting = Global_Config(APPLICATION_SETTING,"webdav_root");
#if defined Q_WS_WIN
/* http://ciz.ch/service/98,1142862047/de/   netdrive webdrive */
label_webdav->setText(tr("Window XP/2000 OS: Webdav Root (Radice)"));
  QString alfa ="A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
   diskremote = alfa.split(",");
   webdav_root->clear();
   int loop= 0 - 1;
   int activeselected;
      QStringListIterator o(diskremote);
              while (o.hasNext()) {
                  loop++;
                  QString disker = o.next();
                  QString diskeree = disker.append(":/");
                  webdav_root->addItem(diskeree);
                  if (disksetting == diskeree) {
                    activeselected = loop;
                  }
              }
     webdav_root->setEditable(false);
     webdav_root->setCurrentIndex(activeselected);
#endif
#if defined Q_WS_MAC
  /* apple + K */
  label_webdav->setText(tr("Mac OS: Apple+K Mount Disk Webdav Root"));
  QString listdiron ="/Volumes/"; 
  webdav_root->addItem(disksetting);
  /* webdav_root->addItem(listdiron);*/
              QDir dir(listdiron);
              if (dir.exists()) {
                  const QFileInfoList list = dir.entryInfoList();
                      QFileInfo fi;
                      for (int i = 0; i < list.size(); i++)
                      {
                          fi = list.at(i);
                             if (fi.isDir() && fi.fileName() != "." && fi.fileName() != "..") {
                                 QString disker = fi.absoluteFilePath();
                                 QString diskeree = disker.append("/");
                                webdav_root->addItem(diskeree); 
                             }
                      }
              }
  webdav_root->setEditable(false);
#endif
              
#if defined Q_WS_X11
  /* http://www.webdav.org/cadaver/ */
  label_webdav->setText(tr("Linux OS: Mount Disk Webdav Root"));
  QString listdiron ="/mnt/"; 
  webdav_root->setEditable(true);
  webdav_root->addItem(disksetting);
  webdav_root->addItem(listdiron);          
#endif

}
Mit einem hidden file auf dem server kann ich auch pruefen ob die platte gemountet ist... :wink:

Verfasst: 12. Juni 2006 07:08
von macman
patrik08 hat geschrieben:Hat mir ein wenig zu bedenken gemacht .... (dachte ich ... den naechsten php oder apache update alles wieder aender?)
Es hat sich natürlich nichts an PHP oder Apache geändert, sondern der Abarbeitung von QHttp. Wahrscheinlicher ist jedoch das mir aus Versehen eine Änderung rein gerutscht war. Die Anpassung ging recht schnell, war nur ein fehlendes Linefeed und eine fehlende Boundingline, aber das muss man erst finden, wenn es vorher ging :)

patrik08 hat geschrieben:so habe ich einfach eine webdav http://www.webdav.org/ verbindung hingezaubert
Wenn man die Möglichkeit hat, ist das ok, aber oft kann man gar nichts am Server ändern.

Verfasst: 12. Juni 2006 11:57
von patrik08
macman hat geschrieben:
patrik08 hat geschrieben:so habe ich einfach eine webdav http://www.webdav.org/ verbindung hingezaubert
Wenn man die Möglichkeit hat, ist das ok, aber oft kann man gar nichts am Server ändern.

Auf Mac ist webdav super ... [Aepfel+K] server name user & pass und mountet wie eine CD oder eine festplatte... ( vorallem schnell und die daten werden jedesmal vom server gelesen ! )

In Window geht es mit IE5 oder netdrive, webdrive.... aber die daten gehen zu lange im cache ... hat real time nachteilen....

Webdav einrichten is gar nicht so schwer! ... Wir als Programmierer koennen doch selber ein linux server aufsstellen und einfach am kunde vermieten..... als nebenverdienst ¤ ....... im apache2 geht dass so...
Und mit ldap autentification geht email + ldap mit dem selben user & pass & ldap Thunderbird adressen zum sharen .....

Code: Alles auswählen

#### debian sarge apache2 
<VirtualHost 145.90.211.57:80>
DocumentRoot "/home/webdav/jazz"
ServerName file.jazzdomaine.com
DirectoryIndex index.php index.html index.htm
<Directory "/home/webdav/jazz">
allow from all
Options +Indexes
IndexOptions 
</Directory>
ErrorLog /var/log/apache2/davfaulterror.log
CustomLog /var/log/apache2/davaccess.log combined
ServerSignature On
Alias /webdav/ /home/webdav/jazz/
<Location /webdav>
### microsoft special iso Aberration norm  IE ###
SetEnv redirect-carefully
### switch not exist index ###
DirectoryIndex webdavnone.html
AuthType Basic
AuthLDAPAuthoritative On
AuthName "Explorer"
AuthLDAPURL ldap://145.90.211.54:389/ou=webdav,dc=box,dc=ciz,dc=ch?uid?sub
require valid-user
DAV On
### php file ###
ForceType text/plain
<Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
require user jazz
</Limit>
</Location>
</VirtualHost>


### apache2.conf  debian ### 
############  webdav 
####### apache user must write enable....  .DAVLock  #########
##########DAVLockDB /home/webdav/.DAVLock
DAVMinTimeout 600
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "Microsoft-WebDAV-MiniRedir/5.1.2600" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS" redirect-carefully
<ifmodule mod_headers.c>
Header add MS-Author-Via "DAV"
</ifmodule>
<ifmodule mod_encoding.c>
EncodingEngine on
NormalizeUsername on
</ifmodule> 
############  webdav 


Verfasst: 12. Juni 2006 12:28
von macman
patrik08 hat geschrieben:Auf Mac ist webdav super ... [Aepfel+K] server name user & pass und mountet wie eine CD oder eine festplatte...
Es mountet wie eine CD, man kann lesen, aber nicht schreiben. Oder hat sich seit Tiger was daran geändert?

Verfasst: 12. Juni 2006 12:53
von patrik08
Im Tiger ist der CD-RW(ordner) neu! ... habe ich im panther noch nie gesehen....

Man nimmt der vollen oder 1/2 voller CD-RW ordner und drag zum CD laufwerk .... 3 raten was passiert?

Es lohnt sich das die 30¤ fuer dass buch http://www.amazon.de/exec/obidos/ASIN/3 ... 39-1476007
zu geben dort findet man auch XCode tips u.n.w .....

Verfasst: 12. Juni 2006 14:01
von macman
patrik08 hat geschrieben:Im Tiger ist der CD-RW(ordner) neu! ... habe ich im panther noch nie gesehen....
Das ging IIRC schon vorher. Was ich meinte, ist, seit wann kann man auf gemountete FTP-Volumes mit dem Finder schreiben. Das ging bisher nicht, oder geht das jetzt nur mit WebDav?