Zmiana image w bazie za pomocą PHP

Zmiana image w bazie za pomocą PHP
P0
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 4 lata
  • Postów:7
0

Witam

Chciałem dodać funkcję aktualizacji zdjęcia, które już znajduje się w bazie.
HTML
formularz

Kopiuj
<form action="scripts/setImage.php" method="post"> 
                        <h3>Ustaw moje zdjęcie:</h3>
                        Wybierz zdjęcie:<br><br>
                        <input type="file" name="file"><br>
                        <input type="submit" value="Zatwierdź">      
                    </form>

PHP

Kopiuj
$file = $_POST['file'];
$path = file_get_contents($file);
if (isset($_POST['file'])) {
    $db->UPDATE("UPDATE users SET image = LOAD_FILE('$path') WHERE id = $idLogged");
}

Tylko muszę zdobyć ścieżkę pliku pobieranego za pomocą formularza input type='file', ale nie wiem jak. File_get_contents myślałem że pobiera ścieżke, ale nie działa.

edytowany 2x, ostatnio: cerrato
serek
  • Rejestracja:około 11 lat
  • Ostatnio:około godziny
  • Postów:1475
0

Jak sama nazwa wskazuje, file_get_content pobiera zawartość, a nie ścieżkę...

Nie zapisuj obrazka bezpośrednio do bazy, to bez sensu. Zapisz samą ścieżkę, a sam obrazek załaduj na serwer. Ba, nawet nie musisz ścieżki, może wystarczy sama nazwa pliku - zakładając, że ścieżka do wszystkich plików jest taka sama, to można ją przechowywać jako stałą, a nazwą pliku będzie jakiś unikalny identyfikator, by nie było powtórzeń.

edytowany 2x, ostatnio: serek
P0
No dobra, ale jak zdobyć ścieżkę do pliku z htmla, input type='file' i jak z tego ścieżke ściągnąć
serek
  • Rejestracja:około 11 lat
  • Ostatnio:około godziny
  • Postów:1475
0

Poczytaj sobie o $_FILES.

edytowany 1x, ostatnio: serek
TR
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 17 godzin
  • Lokalizacja:700m n.p.m.
  • Postów:677
1
serek napisał(a):

Jak sama nazwa wskazuje, file_get_content pobiera zawartość, a nie ścieżkę...

Ba, nawet nie musisz ścieżki, może wystarczy sama nazwa pliku - zakładając, że ścieżka do wszystkich plików jest taka sama, to można ją przechowywać jako stałą

Tyko wiesz, że jeżeli w jednym katalogu masz bardzo dużo plików, to spada (edit: a raczej wzrasta :) ) czas dostepu do pliku? Kilkaset tysięcy plików w jednym katalogu i zaczyna to być poważny problem. Nawet przy kilku tysiącach jest to odczuwalne.


DRY > SOLID (nie bierz tego zbyt poważnie)
edytowany 3x, ostatnio: TomRZ
czysteskarpety
czysteskarpety
  • Rejestracja:około 10 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Piwnica
  • Postów:7697
0

Wpisz w g: image update php i masz wyniki, tutki na youtube:


serek
  • Rejestracja:około 11 lat
  • Ostatnio:około godziny
  • Postów:1475
0
TomRZ napisał(a):

Tyko wiesz, że jeżeli w jednym katalogu masz bardzo dużo plików, to spada (edit: a raczej wzrasta :) ) czas dostepu do pliku? Kilkaset tysięcy plików w jednym katalogu i zaczyna to być poważny problem. Nawet przy kilku tysiącach jest to odczuwalne.

No tak, to podział na katalogi wtedy. Ale wątpię, że OP by taki problem miał, raczej potrzebuje podstaw^^ A nawet jeśli katalogi, to nadal można ich nazw nie trzymać w bazie, jeśli np. może ich nazwy wygenerować z innych danych (np. katalog jako ID usera). Zależy co chce. Dla 2 plików na krzyż nie ma sensu bawić się w katalogi^^

TR
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 17 godzin
  • Lokalizacja:700m n.p.m.
  • Postów:677
1

Dla 2 plików na krzyż na pewno, ale nie wiemy ile tego trzeba.

Ja swego czasu napisałem metodę które dla danej liczby określa katalog, trzymając się zasady że w danym katalogu nie może być więcej niż X plików i Y podkatalogów (domyślnie 100 plików i 10 podkatalogów), przydaje się dla dużej ilości plików.

Np. jeżeli katalog docelowy to "photos", to dla liczby 15 katalogiem dla pliku będzie po prostu katalog docelowy "photos/", a dla liczby rzędu kilkadziesiąt tysięcy może to być coś w stylu "photos/10/34/12/". Mi się bardzo przydaje bo operuje na dużej liczbie plików, gdzie liczba wg. której określa się katalog podstawowy to PK numeryczny danego wiersza który przechowuje w bazie nazwę pliku.

Jeżeli ktoś zainteresowany to chodzi o metodę "getClusteredDir" w tej klasie: https://github.com/tztztztz/php-no-slam-cache/blob/master/vendor/inopx/io/IOTool.php


DRY > SOLID (nie bierz tego zbyt poważnie)
edytowany 7x, ostatnio: TomRZ

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.