PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Hosaw
Отправлено: 11 Января, 2019 - 10:13:46
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Янв. 2019  


Помог: 0 раз(а)




Доброго времени суток, проблема такая: у меня есть php код для загрузки файлов на FTP сервер, но при попытке загрузить файл возникает некая странность. Заключается она в том, что файл загружается на FTP сервер, но его расширение теряется и файл восстановить больше не получается. То есть, допустим я загружаю "picture.png", а на сервере появляется "5c384be00d30b_5c384be00d346" без расширения, и файл больше не подлежит восстановлению.
Вот код:
PHP:
скопировать код в буфер обмена
  1. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ru-RU">
  2. <head profile="http://gmpg.org/xfn/11">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Загрузка на FTP</title>
  5. </head>
  6. <? if(!isset($_POST["submit"])){?>
  7. <div id=center>
  8. <form action="8.php" method="POST" enctype="multipart/form-data">
  9. <table align="center">
  10. <tr>
  11. <td align="right">
  12. <b>Выберите файл:</b>
  13. </td>
  14. <td>
  15. <input name="userfile" type="file" size="50">
  16. </td>
  17. </tr>
  18. </table>
  19. <table align="center">
  20. <tr>
  21. <td align="center">
  22. <input type="submit" name="submit" value="Загрузить" />
  23. </td>
  24. <tr/>
  25. </table>
  26. </form>
  27. <?}
  28. else
  29. {
  30. $filename = $_FILES['file']['name'];
  31. $maxsize = "20000000";
  32. $size = filesize ($_FILES['file']['tmp_name']);
  33. $paths='/download';
  34. $filep=$_FILES['userfile']['tmp_name'];
  35. $ftp_server='хост';
  36. $ftp_user_name='пользователь';
  37. $ftp_user_pass='пасс';
  38. $name=uniqid().'_'.uniqid().'.'.$type;
  39. $extentions = array("gif","txt","tpl","jpg","jpeg","png","zip","rar","7z","tif","psd","swf","flv","avi","mpeg","mp4","mp3","wav","ogg","ogm","doc","xls","ppt","pdf","exe");
  40. $type = strtolower(substr($filename, 1 + strrpos($filename, ".")));
  41. $conn_id = ftp_connect($ftp_server);
  42. $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
  43. if ((!$conn_id) || (!$login_result)) {
  44. echo "FTP соединение произошла ошибка!";
  45. echo "Попытка подключения к $ftp_server для пользователя $ftp_user_name ....";
  46. } else {
  47. echo "<div id=center>";
  48. echo "Загрузка выполнена успешно!<br>";
  49. }
  50. $upload = ftp_put($conn_id, $paths.'/'.iconv("UTF-8","windows-1251",$name), $filep, FTP_BINARY);
  51. if (!$upload) {
  52. echo "FTP загрузка произошла ошибка!";
  53. } else {
  54. echo "</div>";
  55. }
  56. ftp_close($conn_id);
  57. }
  58. ?>
  59. </div>
  60. </html>
 
 Top
Мелкий Супермодератор
Отправлено: 11 Января, 2019 - 10:40:26
Post Id



Активный участник


Просматривает форум
Сообщений всего: 11796
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 596 раз(а)




Включите error_reporting в адекватный E_ALL и отлаживайте скрипты только так.
В частности, $name вы определяете используя переменную $type, которую определяете после. Конечно это работать не будет.

А файлы без расширений ничем не отличаются от файлов с расширениями. Это лишь часть имени файла.


-----
PostgreSQL DBA
 
 Top
Hosaw
Отправлено: 11 Января, 2019 - 10:46:57
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Янв. 2019  


Помог: 0 раз(а)




Мелкий пишет:
Включите error_reporting в адекватный E_ALL и отлаживайте скрипты только так.
В частности, $name вы определяете используя переменную $type, которую определяете после. Конечно это работать не будет.

А файлы без расширений ничем не отличаются от файлов с расширениями. Это лишь часть имени файла.


Проблема как раз в том, что файл или шифруется или что с ним происходит, понять не могу. После этого его невозможно открыть.
 
 Top
Мелкий Супермодератор
Отправлено: 11 Января, 2019 - 11:33:07
Post Id



Активный участник


Просматривает форум
Сообщений всего: 11796
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 596 раз(а)




Посчитайте md5 файла. Если не изменился - значит передан верно, а неверно открываете вы.


-----
PostgreSQL DBA
 
 Top
Hosaw
Отправлено: 11 Января, 2019 - 14:11:25
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Янв. 2019  


Помог: 0 раз(а)




Мелкий пишет:
Посчитайте md5 файла. Если не изменился - значит передан верно, а неверно открываете вы.


Не совсем понял, что значит посчитать md5 файлы?
 
 Top
Мелкий Супермодератор
Отправлено: 11 Января, 2019 - 14:32:51
Post Id



Активный участник


Просматривает форум
Сообщений всего: 11796
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 596 раз(а)




Не "md5 файлы", а "md5 файла", это единственное число, а не опечатка. Одного конкретного, того который отправляете и который получается на ftp сервере.
Любой реализацией md5 посчитайте хэш файла. Можно любым другим алгоритмом, sha1, md5, да хоть crc32. Если хэш совпадает, значит файл (скорей всего) не был искажён при передаче.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB