Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP][MySQL]Upload pliku na FTP link do bazy danych
Forum PHP.pl > Forum > Przedszkole
bolus150
Witam, chciałbym z tego zrobić, żeby wysyłany plik szedł na serwer FTP, a link do bazy danych. Może mi ktoś pomóc?
  1. <html><body>
  2. <form method="post" enctype="multipart/form-data">
  3. <table width="350" border="0" cellpadding="1"
  4. cellspacing="1" class="box">
  5. <tr>
  6. <td>Wybierz plik</td></tr>
  7. <tr>
  8. <td>
  9. <input type="hidden" name="MAX_FILE_SIZE"
  10. value="16000000">
  11. <input name="userfile" type="file" id="userfile">
  12. </td>
  13. <td width="80"><input name="upload"
  14. type="submit" class="box" id="upload" value=" Upload "></td>
  15. </tr>
  16. </table>
  17. </form>
  18. </body>
  19. </html>
  20. <?php
  21.  
  22. if (isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) {
  23. $fileName = $_FILES['userfile']['name'];
  24. $tmpName = $_FILES['userfile']['tmp_name'];
  25. $fileSize = $_FILES['userfile']['size'];
  26. $fileType = $_FILES['userfile']['type'];
  27. $_FILES['userfile']['type']) : mysql_real_escape_string(
  28. stripslashes($_FILES['userfile'])));
  29. $fp = fopen($tmpName, 'r');
  30. $content = fread($fp, filesize($tmpName));
  31. $content = addslashes($content);
  32. fclose($fp);
  33. $fileName = addslashes($fileName);
  34. }
  35. $con = mysql_connect('....', '...', '...') or die(mysql_error());
  36. $db = mysql_select_db('...', $con);
  37. if ($db) {
  38. $query = "INSERT INTO upload (name, size, type, content ) " .
  39. "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
  40. mysql_query($query) or die('Error, query failed');
  41. echo "<br>Plik $fileName został przesłany.<br>";
  42. } else {
  43. echo "Błąd przesyłania pliku.";
  44. }
  45. }
  46. ?>
nospor
No i z czym masz problem?
bolus150
Jak to przeształcić, żeby zapisywało tak jak chcę.

Witam, jakby ktoś mógł sprawdzić mi to co tu jest źle to byłbym wdzięczny

Zapytanie:
  1. $query = "INSERT INTO upload (name, size, type, content, opis ) " .
  2. "VALUES ('$fileName', '$fileSize', '$fileType', '$content', '$opis')";


Formularz:
  1. <input type="hidden" name="MAX_FILE_SIZE"
  2. value="16000000">
  3. <input name="userfile" type="file" id="userfile">
  4. </td><tr>
  5. <td>
  6. Opis <INPUT type="text" name="opis"cols="200" rows="100">
  7. </td><tr>
  8. <td width="80"><input name="upload"
  9. type="submit" class="box" id="upload" value=" Upload "></td>

Dlaczego nie chcę mi w kolumnę opis dodawać napisu który wpisuję w formularz.
boro11
A odbierasz te dane z formularza?

Dodaj:

  1. $opis = $_POST['opis'];


com
pokaz kod który generuje ten zapis i <INPUT type="text" name="opis" cols="200" rows="100"> brakowało przerwy
boro11
Cytat(com @ 15.03.2015, 23:32:40 ) *
pokaz kod który generuje ten zapis i <INPUT type="text" name="opis" cols="200" rows="100"> brakowało przerwy



A tak z ciekawości ta przerwa coś zmienia? Jeśli jest zamknięte poprawnie przy użyciu "?
com
nie zmienia ale taki kod nie jest poprawny i może się okazać że gdzieś jednak nie zadziała smile.gif
bolus150
Tak wygląda cały kod. Chciałbym, żeby wysyłał plik (najlepiej do bazy link, a plik do FTP) i opis do bazy.
Poprawiłem błąd o którym była wcześniej mowa i nadal to samo.
  1. <?php
  2. include 'header.php';
  3. include 'menu.php';
  4. ?>
  5.  
  6. <html><body>
  7. <form method="post" enctype="multipart/form-data">
  8. <table width="350" border="0" cellpadding="1"
  9. cellspacing="1" class="box">
  10. <?php
  11.  
  12. if (isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) {
  13. $fileName = $_FILES['userfile']['name'];
  14. $tmpName = $_FILES['userfile']['tmp_name'];
  15. $fileSize = $_FILES['userfile']['size'];
  16. $fileType = $_FILES['userfile']['type'];
  17. $_FILES['userfile']['type']) : mysql_real_escape_string(
  18. stripslashes($_FILES['userfile'])));
  19. $fp = fopen($tmpName, 'r');
  20. $content = fread($fp, filesize($tmpName));
  21. $content = addslashes($content);
  22. fclose($fp);
  23. $fileName = addslashes($fileName);
  24. }
  25. $con = mysql_connect('....', ....', '....') or die(mysql_error());
  26. $db = mysql_select_db('...', $con);
  27. if ($db) {
  28. $query = "INSERT INTO upload (name, size, type, content, opis ) " .
  29. "VALUES ('$fileName', '$fileSize', '$fileType', '$content', '$opis')";
  30. mysql_query($query) or die('Error, query failed');
  31. mysql_close();
  32. echo "<td>Plik <font color='red'><b>".$fileName."</b></font> został przesłany poprawnie.</td>";
  33. } else {
  34. echo "Błąd przesyłania pliku.";
  35. }
  36. }
  37.  
  38. ?>
  39.  
  40. <tr>
  41. <td>Wysyłanie pliku na serwer</td></tr>
  42. <tr>
  43. <td>
  44. <input type="hidden" name="MAX_FILE_SIZE"
  45. value="16000000">
  46. <input name="userfile" type="file" id="userfile">
  47. </td><tr>
  48. <td>
  49. Opis <INPUT type="text" name="opis" cols="200" rows="100">
  50. </td><tr>
  51. <td width="80"><input name="upload"
  52. type="submit" class="box" id="upload" value=" Upload "></td>
  53. </tr>
  54.  
  55. </form>
  56.  
  57. </table>
  58. </body>
  59. </html>
kujol
Linku z chmury nie weźmiesz, chyba że go ręcznie bedziesz wpisywał biggrin.gif
Musisz go jakoś wygenerować np. za pomocą tablicy $_server.
bolus150
Dopisałem $opis = $_FILES['userfile']['opis']; Jeżeli ['opis'] będzie ['name'] to wpisuję mi nazwę pliku który chcę wrzucić, a nie opis który wpisałem

  1. if (isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) {
  2. $fileName = $_FILES['userfile']['name'];
  3. $tmpName = $_FILES['userfile']['tmp_name'];
  4. $fileSize = $_FILES['userfile']['size'];
  5. $fileType = $_FILES['userfile']['type'];
  6. $opis = $_FILES['userfile']['opis'];
  7. $_FILES['userfile']['type']) : mysql_real_escape_string(
  8. stripslashes($_FILES['userfile'])));
  9. $fp = fopen($tmpName, 'r');
  10. $content = fread($fp, filesize($tmpName));
  11. $content = addslashes($content);
  12. fclose($fp);
  13. $fileName = addslashes($fileName);
  14. }
boro11
Czyli już działa?
nospor
Opis znajduje sie pod $_POST['opis']
bolus150
Jeżeli zrobie [name] wrzuca mi nazwę pliku do bazy a nie opis.
nospor
Przeczytales moj ostatni post?
bolus150
Czyli coś takiego?

  1. $opis = $_POST['opis'];


Wtedy błąd wyskakuje: Error, query failed.

Wydaje mi się, że wtedy coś z zapytaniem musi być nie tak.

  1. $query = "INSERT INTO upload (name, size, type, content, opis ) " .
  2. "VALUES ('$fileName', '$fileSize', '$fileType', '$content', '$opis')";



Ok, wysyłanie dział. Musiałem mieć w bazie jakiś błąd. Ale teraz widzę, że zamiast spacji daje mi + idzie to jakoś zniwelować? I nie pokazuje polskich znaków
com
kodowanie bazy na utf-8 + połączenie w utf-8
bolus150
Metode porównywania znaków w bazie mam ustawioną na utf8_bin.
A w header.php mam

  1. <meta http-equiv="Content-Type" content="text/html; charset = utf-8" />
com
ale musisz się z nią połączyć w utf-8
http://wortal.php.pl/phppl/Wortal/Artykuly...e-znaki-a-MySQL
bolus150
  1. $con = mysql_connect('mysql.cba.pl', 'ba2aaa', 'qwerty') or die(mysql_error());
  2. $db = mysql_select_db('dobreinstalki_c0_pl', $con);
  3. $query = "SELECT id, name, size, opis FROM upload";
  4. $dbh -> query ('SET NAMES utf8');
  5. $dbh -> query ('SET CHARACTER_SET utf8_unicode_ci');
  6. $result = mysql_query($query) or die('Błąd składni SQL');


Zrobiłem w ten sposób i coś jest nie tak;/

Fatal error: Call to a member function query() on a non-object in /virtual/dobreinstalki.c0.pl/download.php on line 20
com
kopiujecie bezmyślnie to potem tak jest smile.gif uzywasz mysql_* a nie pdo to nie $dbh -> query ('SET NAMES utf8'); a
mysql_query('SET NAMES utf8'); i analogicznie dla drugiego smile.gif
bolus150
Kurde.. Nie rozumiem, możesz jaśniej?
com
no piszesz
  1. mysql_query('SET NAMES utf8');

zamiast tego co wkleiłeś smile.gif w tym co podlinkowałem chodziło o samo zawartość zapytania a nie o sposób jego wywołania, myślałem że wiesz co wywołujesz smile.gif
bolus150
  1. $con = mysql_connect('......', '....', '....') or die(mysql_error());
  2. $db = mysql_select_db('.....', $con);
  3. mysql_query('SET NAMES utf8');
  4. $query = "SELECT id, name, size, opis FROM upload";
  5. $result = mysql_query($query) or die('Błąd składni SQL');
  6. if (mysql_num_rows($result) == 0) {
  7. echo "Baza danych jest pusta <br>";


Zrobiłem tak i nadal nic;/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.