
07.05.2008, 13:07
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Я не советую делать upload через сокеты, тем более, что ты не сталкивался с такой темой. Там не очень простой HTTP-пакет получится, поэтому я больше чем уверен, что ты где-нибудь напортачишь... Пакет в принципе не сложный, смотрится примерно так:
Код:
POST /somehandler HTTP/1.1
Host: somehost.somedomain
Content-Type: multipart/form-data;boundary=---------------------------DaMaGeLaB
Content-Length: ...
-----------------------------DaMaGeLaB
Content-Type: ...
Content-Encoding: ...
Content-Disposition: form-data; name="somename"
XXYYZZ...
-----------------------------DaMaGeLaB--
То есть сам видишь - прежде чем послать запрос, тебе нужно верно расчитать Content-Length посылаемого файла, указать Content-Type и Content-Encoding, и переслать байты файла в соответствии с выбранным методом кодирования файла. При этом ещё нужно не напороть чепухи в разделителях секции...
Куда проще воспользоваться уже наработанными методами - отправляй файл через форму, а в принимающем скрипте работай через функции аплоада. Вот пример:
PHP код:
<?php
$html_code =<<<HTML_CODE
<html>
<head>
<title>Upload</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
<input name="file1" type="file" /><br />
<input type="submit" value="Upload" />
</form>
</body>
</html>
HTML_CODE;
print($html_code);
define("SERVER_UPLOAD_DIR", "upload");
set_time_limit(0);
if (isset($_FILES) && is_array($_FILES)) {
foreach ($_FILES as $file) {
if ($file['error'] == 0) {
$destination = sprintf("%s/%s", SERVER_UPLOAD_DIR, $file['name']);
if (move_uploaded_file($file['tmp_name'], $destination)) {
printf("File '%s' with size %s Kb was successfully uploaded... \n", $file['name'], round($file['size'] / 1024, 2));
printf("<a href=\"http://%s%s/%s/%s\">Download File</a><br>", $_SERVER['SERVER_NAME'], dirname($_SERVER['REQUEST_URI']), SERVER_UPLOAD_DIR, $file['name']);
} else
printf("Could not move uploaded file '%s' to destination...", $file['name']);
} else
printf("Error %s occuried. Could not upload file to server - skiping...", $file['error']);
}
}
?>
|
|
|