[OSM-talk] [OSM-dev] Wishes

Bernhard zwischenbrugger bz at datenkueche.com
Fri Mar 19 13:46:56 GMT 2010


hi

thanks to John Smith the upload is working now.

If you have an iphone, type
http://khtml.org
to the safari url line.

click "REC"
walk around
click "upload"

At the moment it's all with one account.
You will find the traces here:
http://api06.dev.openstreetmap.org/traces

oAuth will follow

Bernhard




John Smith schrieb:
> On 19 March 2010 00:21, Bernhard zwischenbrugger <bz at datenkueche.com> wrote:
>   
>> GPX is XML and there is no need for multipart/form-data upload.
>>     
>
> GPX might be XML, but it's not HTTP, and if you want to upload a file
> over HTTP you need to talk multipart/form...
>
>   
>> To debug that kind of uploads is not possible.
>>     
>
> There is plenty of ways to debug, just like everything else it's a
> skill set, in this case you need to sniff packets...
>
> <?
> 	$user = 'username';
> 	$pass = 'password';
>         $file = '/tmp/filename.gpx';
>
> 	$url = "/api/0.6/gpx/create";
>
> 		$file = trim($file);
> 		if($file == '')
> 			continue;
>
> 		if(!file_exists($file))
> 			continue;
>
> 		$boundary = '----------'.sha1(date("U").$fn.rand(0, date("U")));
> 		$fn = md5(basename(date("U").$file.$boundary));
> 		$cmd = "grep '<trkpt' '$file'|wc -l";
> 		$trackpoints = trim(`$cmd`);
>
> 		if($trackpoints >= 300)
> 		{
> 			$body = "";
> 			$fn .= '.gpx';
> 			$data = gzencode(file_get_contents($file));
>
> 			$body .= '--'.$boundary."\r\n";
> 			$body .= "Content-Disposition: form-data; name=\"file\";
> filename=\"$fn.gz\"\r\n\r\n";
> 			$body .= $data."\r\n";
> 			$body .= '--'.$boundary."\r\n";
> 			$body .= "Content-Disposition: form-data; name=\"description\"\r\n\r\n";
> 			$body .= "uploaded route.\r\n";
> 			$body .= '--'.$boundary."\r\n";
> 			$body .= "Content-Disposition: form-data; name=\"tags\"\r\n\r\n";
> 			$body .= "automatic_upload ".date("Y F")."\r\n";
> 			$body .= '--'.$boundary."\r\n";
> 			$body .= "Content-Disposition: form-data; name=\"public\"\r\n\r\n";
> 			$body .= "1\r\n";
>
> 			$body .= '--'.$boundary."--\r\n";
>
> 			$head  = "POST $url HTTP/1.1\r\n";
> 			$head .= "host: www.openstreetmap.org\r\n";
> 			$head .= "Transfer-Encoding: 8bit\r\n";
> 			$head .= "Authorization: Basic ".base64_encode($user.':'.$pass)."\r\n";
> 			$head .= "Content-Length: ".strlen($body)."\r\n";
> 			$head .= "Content-type: multipart/form-data; boundary=$boundary\r\n";
> 			$head .= "Connection: close\r\n\r\n".$body;
> 			//echo $head;
>
> 			if(($fp = @fsockopen("www.openstreetmap.org", 80)) === FALSE)
> 				continue;
>
> 			fputs($fp, $head);
> 			$line = $lastline = "";
> 			$start = false;
> 			while(!feof($fp))
> 			{
> 				$line = trim(fgets($fp));
> 				if($start == false && $line == '')
> 				{
> 					$start = true;
> 					continue;
> 				}
> 				if($start == false)
> 					continue;
>
> 				$id = $line;
> 				break;
> 			}
> 			fclose($fp);
> 			if($id <= 0)
> 				continue;
> 		}
>   





More information about the talk mailing list