binary in post var
ik wil graag imgs uploaden via remote php dus via de cmdline.
Ik open een socket naar server waar images moeten komen en ik schrijf die vars weg, alleen het wegschrijven van de binary string gaat niet goed
heb ALLES al geprobeerd, base64encoding, urlencoding, bin2hex echt alles
maar het wil gewoon niet lukken om die files goed weg te schrijven als png op server
als ik de bin wegschrijf op me pc gewoon werkt het wel dus er gaat iets mis met de bin string..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
//bin content
$data_content = base64_encode($sDecode);
//het wegschrijven
$this->postImage ( array ( 'img' => $data_content , 'name' => $iHash ) );
//post image function
function postImage ($mVars ) {
#create socket
$this->openImageServer();
#build vars
$sVars = '';
if ( is_array ( $mVars ) ) {
#loop
foreach ( $mVars as $sKey => $sValue )
$sVars .= '&' . $sKey . '=' . $sValue;
#remove first &
$sVars = substr ( $sVars, 1 );
} else $sVars = $mVars;
#do post
$this->write ( "POST /~stefan/uploadImage.php HTTP/1.1" );
$this->write ( "Host: 85.98.128.156" );
$this->write ( "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8" );
$this->write ( "Content-Type: application/x-www-form-urlencoded");
$this->write ( "Content-Length: " . strlen ( $sVars ) );
$this->write ( "" );
$this->write ( $sVars );
}
###SERVER####
#post image?
if ( isset ( $_POST['img'] ) |) {
$sBin = base64_decode ( $_POST['img'] ) ;
$fp = fopen ( 'uploads/temp/img.png', 'wb' );
fwrite ( $fp, $sBin);
fclose ( $fp );
}
?>
//bin content
$data_content = base64_encode($sDecode);
//het wegschrijven
$this->postImage ( array ( 'img' => $data_content , 'name' => $iHash ) );
//post image function
function postImage ($mVars ) {
#create socket
$this->openImageServer();
#build vars
$sVars = '';
if ( is_array ( $mVars ) ) {
#loop
foreach ( $mVars as $sKey => $sValue )
$sVars .= '&' . $sKey . '=' . $sValue;
#remove first &
$sVars = substr ( $sVars, 1 );
} else $sVars = $mVars;
#do post
$this->write ( "POST /~stefan/uploadImage.php HTTP/1.1" );
$this->write ( "Host: 85.98.128.156" );
$this->write ( "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8" );
$this->write ( "Content-Type: application/x-www-form-urlencoded");
$this->write ( "Content-Length: " . strlen ( $sVars ) );
$this->write ( "" );
$this->write ( $sVars );
}
###SERVER####
#post image?
if ( isset ( $_POST['img'] ) |) {
$sBin = base64_decode ( $_POST['img'] ) ;
$fp = fopen ( 'uploads/temp/img.png', 'wb' );
fwrite ( $fp, $sBin);
fclose ( $fp );
}
?>
hoop dat iemand hier mischien ervaring mee heeft en me kan helpen!
Gewijzigd op 01/01/1970 01:00:00 door Stefan
Gebruik werkelijk multipart:
http://www.phphulp.nl/php/tutorials/8/368/795/
dus met boundaries en dergelijke.
als ik het content-type verander load hij helemaal niks up...
$data = array();
$data['naam_voor_het_veld'] = array('mime/type', 'bestandsnaam', 'inhoud_van_het_bestand');
hmm dat snap ik niet helemaal, heb je klein voorbeeldje? oid
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
// Nodige informatie
define('SERVER', 'www.example.org');
define('PORT', 80);
define('PATH', '/example.php');
// Versie
define('VERSION', '1.0');
// End of line
define('_EOL', "\r\n");
// Data
$data = array();
$data['naam_voor_het_veld'] = array('mime/type', 'bestandsnaam', 'inhoud_van_het_bestand');
$data['test'] = array('text/plain', 'test.txt', 'bladiebla');
$data['plaatje'] = array('image/png', 'test.png', '--plaatje--');
// Maak een socket
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
if (!$sock) {
echo 'Fatal error: Couldn\'t create socket';
exit;
}
// Maak verbinding
if (!socket_connect($sock, SERVER, PORT)) {
echo 'Fatal error: Couldn\'t connect';
exit;
}
// Maak een boundary
$bound = null;
for ($i = 0; $i < 15; $i++) {
$bound .= chr(rand(33, 126));
}
// Maak het body stuk
$body = null;
foreach ($data as $var => $content) {
$body .= '--' . $bound . _EOL;
if ($content[0] != null) {
$body .= 'Content-Disposition: form-data; name="' . $var . '";
filename="' . $content[1] . '"' . _EOL;
$body .= 'Content-Type: ' . $content[0] . _EOL;
}
else {
$body .= 'Content-Disposition: form-data; name="' .
$var . '"' . _EOL;
}
$body .= _EOL;
$body .= $content[2] . _EOL;
}
$body .= '--' . $bound . '--';
// Maak het request
$request = null;
$request .= 'POST ' . PATH . ' HTTP/1.0' . _EOL;
$request .= 'Host: ' . SERVER . _EOL;
$request .= 'User-Agent: LegolasWeb WebBrowserDemo ' . VERSION . _EOL;
$request .= 'Content-Type: multipart/form-data; boundary=' . $bound . _EOL;
$request .= 'Content-Length: ' . strlen($body) . _EOL;
$request .= _EOL;
$request .= $body;
// En verstuur het
if (!socket_send($sock, $request, strlen($request), 0)) {
echo 'Fatal error: Couldn\'t send request';
exit;
}
// Haal de response op
$output = null;
$buffer = null;
while (socket_recv($sock, $buffer, 1024, 0) != 0) {
$output .= $buffer;
}
socket_close($sock);
?>
// Nodige informatie
define('SERVER', 'www.example.org');
define('PORT', 80);
define('PATH', '/example.php');
// Versie
define('VERSION', '1.0');
// End of line
define('_EOL', "\r\n");
// Data
$data = array();
$data['naam_voor_het_veld'] = array('mime/type', 'bestandsnaam', 'inhoud_van_het_bestand');
$data['test'] = array('text/plain', 'test.txt', 'bladiebla');
$data['plaatje'] = array('image/png', 'test.png', '--plaatje--');
// Maak een socket
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
if (!$sock) {
echo 'Fatal error: Couldn\'t create socket';
exit;
}
// Maak verbinding
if (!socket_connect($sock, SERVER, PORT)) {
echo 'Fatal error: Couldn\'t connect';
exit;
}
// Maak een boundary
$bound = null;
for ($i = 0; $i < 15; $i++) {
$bound .= chr(rand(33, 126));
}
// Maak het body stuk
$body = null;
foreach ($data as $var => $content) {
$body .= '--' . $bound . _EOL;
if ($content[0] != null) {
$body .= 'Content-Disposition: form-data; name="' . $var . '";
filename="' . $content[1] . '"' . _EOL;
$body .= 'Content-Type: ' . $content[0] . _EOL;
}
else {
$body .= 'Content-Disposition: form-data; name="' .
$var . '"' . _EOL;
}
$body .= _EOL;
$body .= $content[2] . _EOL;
}
$body .= '--' . $bound . '--';
// Maak het request
$request = null;
$request .= 'POST ' . PATH . ' HTTP/1.0' . _EOL;
$request .= 'Host: ' . SERVER . _EOL;
$request .= 'User-Agent: LegolasWeb WebBrowserDemo ' . VERSION . _EOL;
$request .= 'Content-Type: multipart/form-data; boundary=' . $bound . _EOL;
$request .= 'Content-Length: ' . strlen($body) . _EOL;
$request .= _EOL;
$request .= $body;
// En verstuur het
if (!socket_send($sock, $request, strlen($request), 0)) {
echo 'Fatal error: Couldn\'t send request';
exit;
}
// Haal de response op
$output = null;
$buffer = null;
while (socket_recv($sock, $buffer, 1024, 0) != 0) {
$output .= $buffer;
}
socket_close($sock);
?>
en dang ewoon uploaden door isset ( $_FILE ...?
jup