Показать сообщение отдельно

  #4  
Старый 07.05.2008, 13:07
groundhog
Познавший АНТИЧАТ
Регистрация: 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...&nbsp;\n"$file['name'], round($file['size'] / 10242));
                
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']);
   }
}

?>
 
Ответить с цитированием