Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][HTML][PHP]Przesyłanie pliku na serwer i dodanie linku do pliku do bazy mysql, Skrypt
Exille
post 31.05.2016, 13:07:01
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 31.05.2016

Ostrzeżenie: (0%)
-----


Witam, jako że jestem zielony w temacie programowania postanowiłem napisać na forum. Otóż mam taki problem, zmixowałem sobie 2 skrypty czyli upload na serwer i formularz dodający rekord do MysQL, zrobiłem prostą zmienną która wyświetla link do wrzuconego pliku, ale nie wiem jak zrobić by odnośnik wylądował automatycznie w bazie danych, niżej cały kod (proszę o wyrozumiałość jestem zielony w temacie).

  1.  
  2. <html>
  3. <head>
  4.  
  5. <title>Upload</title>
  6. </head>
  7. <body>
  8.  
  9. <div>
  10. <form enctype="multipart/form-data" action="" method="POST">
  11. <input type="hidden" name="MAX_FILE_SIZE" value="50000000" />
  12. <input name="plik" type="file" />
  13. <input name="plikzdj" type="file" />
  14.  
  15. <input type="submit" value="Wyslij plik" />
  16. </form>
  17. </div>
  18. </body>
  19. </html>
  20. <?php
  21. $plik_tmp = $_FILES['plik']['tmp_name'];
  22. $plik_nazwa = $_FILES['plik']['name'];
  23. $plik_rozmiar = $_FILES['plik']['size'];
  24.  
  25. $plikzdj_tmp = $_FILES['plikzdj']['tmp_name'];
  26. $plikzdj_nazwa = $_FILES['plikzdj']['name'];
  27. $plikzdj_rozmiar = $_FILES['plikzdj']['size'];
  28.  
  29. if(is_uploaded_file($plik_tmp) && is_uploaded_file($plikzdj_tmp)) {
  30. move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
  31. move_uploaded_file($plikzdj_tmp, "upload/$plikzdj_nazwa");
  32. echo "Plik: <strong>$plik_nazwa</strong> zostal przeslany na serwer!";
  33. echo "Plik: <strong>$plikzdj_nazwa</strong> zostal przeslany na serwer!";
  34.  
  35. $zmienna1 = 'http://localhost/dodawanie/upload/';
  36. echo '<br>';
  37. echo '<br>';
  38.  
  39. $lnk = $zmienna1 . $plik_nazwa;
  40. $lnk2 = $zmienna1 . $plikzdj_nazwa;
  41.  
  42. echo '<div id=cos style="color: red;"><strong><h1>'.$lnk.' </h1></strong></div>';
  43. echo '<div id=cos style="color: red;"><strong><h1>'.$lnk2.' </h1></strong></div>';
  44. }
  45. ?>
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72. <html>
  73.  
  74. <form enctype="multipart/form-data" action="" method="POST">
  75.  
  76. Nazwa:<br />
  77. <input type="text" name="title" /><br />
  78. Link do filmu:<br />
  79. <input type="text" name="lnk" /><br />
  80. Link do zdjecia:<br />
  81. <input type="text" name="thumb_url" /><br />
  82. <input type="submit" value="dodaj" />
  83. </form>
  84.  
  85. </html>
  86.  
  87.  
  88. <?php
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95. // odbieramy dane z formularza
  96. $title = $_POST['title'];
  97. $lnk = $_POST['lnk'];
  98. $thumb_url = $_POST['thumb_url'];
  99.  
  100.  
  101. if($title and $lnk and $thumb_url) {
  102.  
  103. // łączymy się z bazą danych
  104. $connection = @mysql_connect('localhost', 'root', 'mateusz')
  105. or die('Brak połączenia z serwerem MySQL');
  106. $db = @mysql_select_db('123', $connection)
  107. or die('Nie mogę połączyć się z bazą danych');
  108.  
  109. // dodajemy rekord do bazy
  110. $ins = @mysql_query("INSERT INTO videos SET title='$title', lnk='$lnk', thumb_url='$thumb_url'");
  111.  
  112. if($ins) echo "Rekord został dodany poprawnie" ;
  113.  
  114. else echo "Błąd nie udało się dodać nowego rekordu";
  115.  
  116. mysql_close($connection);
  117. }
  118.  
  119. ?>
  120.  
  121.  


Ten post edytował Exille 31.05.2016, 13:08:14
Go to the top of the page
+Quote Post
Lord
post 31.05.2016, 14:01:56
Post #2





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----


  1. <html>
  2. <head>
  3.  
  4. <title>Upload</title>
  5. </head>
  6. <body>
  7.  
  8. <div>
  9. <form enctype="multipart/form-data" action="" method="POST">
  10. <input type="hidden" name="MAX_FILE_SIZE" value="50000000" />
  11. <input name="plik" type="file" />
  12.  
  13. <input type="submit" value="Wyslij plik" />
  14. </form>
  15. </div>
  16.  
  17. <?php
  18. $plik_tmp = $_FILES['plik']['tmp_name'];
  19. $plik_nazwa = $_FILES['plik']['name'];
  20. $plik_rozmiar = $_FILES['plik']['size'];
  21.  
  22.  
  23. // łączymy się z bazą danych
  24. $connection = @mysql_connect('localhost', 'root', 'mateusz')
  25. or die('Brak połączenia z serwerem MySQL');
  26. $db = @mysql_select_db('123', $connection)
  27. or die('Nie mogę połączyć się z bazą danych');
  28.  
  29. if(is_uploaded_file($plik_tmp)) {
  30. move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
  31. echo "Plik: <strong>$plik_nazwa</strong> zostal przeslany na serwer!";
  32.  
  33. $zmienna1 = 'http://localhost/dodawanie/upload/';
  34. echo '<br>';
  35. echo '<br>';
  36.  
  37. $lnk = $zmienna1 . $plik_nazwa;
  38.  
  39. echo '<div id=cos style="color: red;"><strong><h1>'.$lnk.' </h1></strong></div>';
  40.  
  41.  
  42. // dodajemy rekord do bazy
  43. $ins = @mysql_query("INSERT INTO videos SET link='$lnk'");
  44.  
  45. if($ins) echo "Rekord został dodany poprawnie" ;
  46.  
  47. else echo "Błąd nie udało się dodać nowego rekordu";
  48. }
  49.  
  50. mysql_close($connection);
  51. ?>
  52. </body>
  53. </html>
  54.  


tak to mniej więcej powinno wygladać, nie sprawdzałem tego, ale przynajmniej wszystko jest tam gdzie powinno. Tylko jak nie potrafisz sam połączyć dwóch prostych czynności to raczej nie dasz rady tego sam zrobić smile.gif

Ten post edytował Lord 31.05.2016, 14:04:47
Go to the top of the page
+Quote Post
poli25
post 31.05.2016, 14:19:48
Post #3





Grupa: Zarejestrowani
Postów: 239
Pomógł: 20
Dołączył: 19.02.2010

Ostrzeżenie: (0%)
-----


Ja bym zrobił na Twoim miejscu 2 pliki: na przykład upload.php
  1. <html>
  2. <head>
  3.  
  4. <title>Upload</title>
  5. </head>
  6. <body>
  7.  
  8. <div>
  9. <form enctype="multipart/form-data" action="upl.php" method="POST">
  10. <input type="hidden" name="MAX_FILE_SIZE" value="50000000" />
  11. <input name="plik" type="file" />
  12. <input name="plikzdj" type="file" />
  13. <br />
  14. Nazwa:<br />
  15. <input type="text" name="title" /><br />
  16. Link do filmu:<br />
  17. <input type="text" name="lnk" /><br />
  18. Link do zdjecia:<br />
  19. <input type="text" name="thumb_url" /><br />
  20. <input type="submit" value="dodaj" />
  21.  
  22.  
  23.  
  24. <input type="submit" value="Wyslij plik" />
  25. </form>
  26. </div>
  27.  
  28. </body>
  29. </html>
  30.  
  31.  


i drugi plik z nazwą: upl.php
  1.  
  2. <?php
  3.  
  4. // odbieramy dane z formularza
  5.  
  6.  
  7. $plik_tmp = $_FILES['plik']['tmp_name'];
  8. $plik_nazwa = $_FILES['plik']['name'];
  9. $plik_rozmiar = $_FILES['plik']['size'];
  10.  
  11. $plikzdj_tmp = $_FILES['plikzdj']['tmp_name'];
  12. $plikzdj_nazwa = $_FILES['plikzdj']['name'];
  13. $plikzdj_rozmiar = $_FILES['plikzdj']['size'];
  14.  
  15. if(is_uploaded_file($plik_tmp) && is_uploaded_file($plikzdj_tmp)) {
  16. move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
  17. move_uploaded_file($plikzdj_tmp, "upload/$plikzdj_nazwa");
  18. echo "Plik: <strong>$plik_nazwa</strong> zostal przeslany na serwer!";
  19. echo "Plik: <strong>$plikzdj_nazwa</strong> zostal przeslany na serwer!";
  20.  
  21. $zmienna1 = 'http://localhost/dodawanie/upload/';
  22. echo '<br>';
  23. echo '<br>';
  24.  
  25. $lnk = $zmienna1 . $plik_nazwa;
  26. $lnk2 = $zmienna1 . $plikzdj_nazwa;
  27.  
  28. echo '<div id=cos style="color: red;"><strong><h1><a href='.$lnk.'>'.$lnk.' </a></h1></strong></div>';
  29. echo '<div id=cos style="color: red;"><strong><h1><a href='.$lnk2.'>'.$lnk2.' </a></h1></strong></div>';
  30. }
  31.  
  32.  
  33.  
  34. $title = $_POST['title'];
  35. $lnk = $_POST['lnk'];
  36. $thumb_url = $_POST['thumb_url'];
  37.  
  38.  
  39. if($title and $lnk and $thumb_url) {
  40.  
  41. $servername = "localhost";
  42. $username = "admin";
  43. $password = "root";
  44. $dbname = "dodawanie";
  45.  
  46. $conn = new mysqli($servername, $username, $password, $dbname);
  47.  
  48. if ($conn->connect_error) {
  49. die("Connection failed: " . $conn->connect_error);
  50. }
  51.  
  52.  
  53.  
  54. // dodajemy rekord do bazy
  55. $ins = "INSERT into videos (title,lnk,thumb_url)
  56. values('$title','$lnk','$thumb_url')";
  57. $result = $conn->query($ins);
  58.  
  59.  
  60.  
  61. }
  62.  
  63. ?>

Powodzenia i pozdrawiam
Go to the top of the page
+Quote Post
Exille
post 31.05.2016, 16:52:02
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 31.05.2016

Ostrzeżenie: (0%)
-----


Cytat(Lord @ 31.05.2016, 15:01:56 ) *
  1. <html>
  2. <head>
  3.  
  4. <title>Upload</title>
  5. </head>
  6. <body>
  7.  
  8. <div>
  9. <form enctype="multipart/form-data" action="" method="POST">
  10. <input type="hidden" name="MAX_FILE_SIZE" value="50000000" />
  11. <input name="plik" type="file" />
  12.  
  13. <input type="submit" value="Wyslij plik" />
  14. </form>
  15. </div>
  16.  
  17. <?php
  18. $plik_tmp = $_FILES['plik']['tmp_name'];
  19. $plik_nazwa = $_FILES['plik']['name'];
  20. $plik_rozmiar = $_FILES['plik']['size'];
  21.  
  22.  
  23. // łączymy się z bazą danych
  24. $connection = @mysql_connect('localhost', 'root', 'mateusz')
  25. or die('Brak połączenia z serwerem MySQL');
  26. $db = @mysql_select_db('123', $connection)
  27. or die('Nie mogę połączyć się z bazą danych');
  28.  
  29. if(is_uploaded_file($plik_tmp)) {
  30. move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
  31. echo "Plik: <strong>$plik_nazwa</strong> zostal przeslany na serwer!";
  32.  
  33. $zmienna1 = 'http://localhost/dodawanie/upload/';
  34. echo '<br>';
  35. echo '<br>';
  36.  
  37. $lnk = $zmienna1 . $plik_nazwa;
  38.  
  39. echo '<div id=cos style="color: red;"><strong><h1>'.$lnk.' </h1></strong></div>';
  40.  
  41.  
  42. // dodajemy rekord do bazy
  43. $ins = @mysql_query("INSERT INTO videos SET link='$lnk'");
  44.  
  45. if($ins) echo "Rekord został dodany poprawnie" ;
  46.  
  47. else echo "Błąd nie udało się dodać nowego rekordu";
  48. }
  49.  
  50. mysql_close($connection);
  51. ?>
  52. </body>
  53. </html>
  54.  


tak to mniej więcej powinno wygladać, nie sprawdzałem tego, ale przynajmniej wszystko jest tam gdzie powinno. Tylko jak nie potrafisz sam połączyć dwóch prostych czynności to raczej nie dasz rady tego sam zrobić smile.gif



W każdym razie dzięki za pomoc, przetestuje czy działa.
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post 21.10.2021, 14:50:28
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

Ostrzeżenie: (20%)
X----


Podłączę się pod wątek.

Pliki pdf, jpg znajdują się w bazie danych w polu LONGBOB. Zaszła zmiana koncepcji, trzeba je wyciągnąć i wrzucić na serwer do katalogu dupa np.
Jak to zrobić, czego użyć, ktoś podpowie. Jest ich trochę.
Go to the top of the page
+Quote Post
LowiczakPL
post 21.10.2021, 15:51:21
Post #6





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Ja to robię tak:

jeśli masz pliki w bazie i chcesz je wyeksportować do plików a w bazie mieć tylko nazwy

1. listujesz rekordy bazy
2. generujesz jakieś nazwy i zapisujesz je w bazie
3. w zdefiniowanej lokalizacji zapisujesz pliki o wygenerowanej nazwie

koniec


główne pytanie zapis plików na serwer i ich nazw do bazy

robię to w ten sposób,

1. generuje UNIKALNĄ nazwę pliku
2. wgrywam plik do określonej lokalizacji na serwerze
3. zapisuje w bazie oryginalną nazwę pliku oraz ta wygenerowaną
4. aby pobrać/pokazać plik pobieram z lokalizacji ten plik o wygenerowanej nazwie a użytkownikowi serwuję plik o nazwie oryginalnej wtedy kiedy go pobiera lub podgląda np zdjęcie

dzięki temu może być kilka plików o identycznej nazwie


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post 21.10.2021, 17:02:23
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

Ostrzeżenie: (20%)
X----


A w jaki sposób wgrać pliki na serwer. Powiedzmy że zawartość danych mam w tablicy $pliki[]. Jak teraz w pętli wrzucać je na serwer do konkretnej lokalizacji. Brakuje mi jakiejś funkcji/polecenia by to wykonać. Resztę zrobię jak pisałeś.
Go to the top of the page
+Quote Post
LowiczakPL
post 21.10.2021, 19:15:33
Post #8





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


... a niby jak wgrałeś pliki do bazy, rób tak samo, po prostu odczyt i zapisujesz je na serwer z bazy

Ty to robiłeś czy nie masz o tym pojęcia i zastanawiasz się jak to rozkminić?

Często i gęsto bibiblioteki albo muzea mają pliki np. eksponatów w bazie bo ktoś to tak zaprojektował aby mieć podglad na zmiany ...


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post 22.10.2021, 09:03:49
Post #9





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

Ostrzeżenie: (20%)
X----


Pliki przesyłane były w taki sposób

  1. $max_rozmiar = 200000000; //w bajtach
  2. if (is_uploaded_file($_FILES['plik']['tmp_name']))
  3. {
  4. $nazwa=''.$_FILES['plik']['name'];//echo"$nazwa<br>";
  5. $typ=''.$_FILES['plik']['type'];//echo"$nazwa<br>";
  6. if ($_FILES['plik']['size'] > $max_rozmiar) { echo 'Błąd! Plik jest za duży!';}else if(($_FILES['plik']['type']!="application/pdf")&&($_FILES['plik']['type']!="image/jpeg")) { echo 'Błąd! Niezgodny typ pliku ('.$_FILES['plik']['type'].') !<br>dopuszczalne są tylko *.pdf i *.jpg';
  7. }
  8. else
  9. {
  10. $zawplik=file_get_contents($_FILES['plik']['tmp_name'],true);
  11. $ilzn=strlen($zawplik); echo"<br>ilość znaków w pliku=$ilzn";
  12. $nplik=addslashes($zawplik);
  13.  
  14. include "baza.php";
  15. $zapytanie = "UPDATE akty set ,tresc='$nplik',nazwa='$nazwa',typp='$typ' where id='$id'";
  16. $wykonaj = mysql_query($zapytanie) or die ("wprowadzenie pliku błędne ".mysql_error());


Pliki wczytywane były pojedynczo formularzem, a teraz trzeba ja w pętli na serwerze zapisać.
Jak to wykonać ?
Go to the top of the page
+Quote Post
nospor
post 22.10.2021, 09:09:02
Post #10





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




No skoro masz je w tablicy, to zapisz teraz na dysku gdzie chcesz

https://www.php.net/manual/en/function.file-put-contents.php
i juz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post 22.10.2021, 13:58:53
Post #11





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

Ostrzeżenie: (20%)
X----


Tego szukałem, nie znałem funkcji. Nie wiedziałem jak poznać jej nazwę. Wpisywałem w google różne cuda, nie dało tego wyniku. Dziękuję.

@nospor
A pytanie do Ciebie takie.
Wg Twojej wiedzy/doświadczenia pliki pdf,jpg trzymać lepiej w mysql czy na dysku serwera ?
Chcą u mnie zmienić koncepcję, rozkaz z góry. Chciałbym Ciebie podpytać.
Go to the top of the page
+Quote Post
aras785
post 22.10.2021, 14:18:55
Post #12





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


Wszystko co ma więcej niż kilka KB wrzucaj po prostu na serwer / cdn / s3.. W bazie zapisuj tylko ścieżki do tych plików. Swoją drogą w życiu nie spotkałem się z projektem który trzymałby pliki w bazie danych, jeśli ktoś widzi w tym jakieś plusy to chętnie uzupełnię swoją wiedzę.

Pozdrawiam
Go to the top of the page
+Quote Post
nospor
post 22.10.2021, 15:37:09
Post #13





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Jak juz aras wspomnial: na serwerze


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 12:28