Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Расшифровка файлов на FTP сервере
Форумы портала PHP.SU » » Вопросы новичков » Расшифровка файлов на FTP сервере

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

1. Hosaw - 11 Января, 2019 - 10:13:46 - перейти к сообщению
Доброго времени суток, проблема такая: у меня есть 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>
2. Мелкий - 11 Января, 2019 - 10:40:26 - перейти к сообщению
Включите error_reporting в адекватный E_ALL и отлаживайте скрипты только так.
В частности, $name вы определяете используя переменную $type, которую определяете после. Конечно это работать не будет.

А файлы без расширений ничем не отличаются от файлов с расширениями. Это лишь часть имени файла.
3. Hosaw - 11 Января, 2019 - 10:46:57 - перейти к сообщению
Мелкий пишет:
Включите error_reporting в адекватный E_ALL и отлаживайте скрипты только так.
В частности, $name вы определяете используя переменную $type, которую определяете после. Конечно это работать не будет.

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


Проблема как раз в том, что файл или шифруется или что с ним происходит, понять не могу. После этого его невозможно открыть.
4. Мелкий - 11 Января, 2019 - 11:33:07 - перейти к сообщению
Посчитайте md5 файла. Если не изменился - значит передан верно, а неверно открываете вы.
5. Hosaw - 11 Января, 2019 - 14:11:25 - перейти к сообщению
Мелкий пишет:
Посчитайте md5 файла. Если не изменился - значит передан верно, а неверно открываете вы.


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

 

Powered by ExBB FM 1.0 RC1