• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Upload zdjęcia - zmiana nazw kilku zdjęć w pętli

VPS Starter Arubacloud
0 głosów
219 wizyt
pytanie zadane 16 września 2018 w PHP przez Zbigniew Andrysiak Bywalec (2,470 p.)
zmienione kategorie 16 września 2018 przez ScriptyChris

Cześć Programiści.

Potrzebuję zmienić poniższy kod, aby nie tylko w bazie sql zapisywał mi plik ze zmienioną nazwą, ale również w katalogu.Prośba o pomoc

if(count($_FILES["file"]["name"]) > 0)
{
 //$output = '';

 for($count=0; $count<count($_FILES["file"]["name"]); $count++)
 {
  $file_name = $_FILES["file"]["name"][$count];
  $tmp_name = $_FILES["file"]['tmp_name'][$count];
  $file_array = explode(".", $file_name);
  $file_extension = end($file_array);
  if(file_already_uploaded($file_name, $db2))
  {
   $file_name = $file_array[0] . '-'. rand() . '.' . $file_extension;
  }
  $location = 'C:\xampp1\htdocs\stepbystep2\img' . $count.'.' .$file_extension;
  if(move_uploaded_file($tmp_name, $location))
  {
   $query = "
   INSERT INTO rotator (zdjecie, tekst, active) 
   VALUES ('".$count.'.' .$file_extension ."', '', 'TAK') 
   ";
   $statement = $db2->prepare($query);
   $statement->execute();
   
  }
 }
}

function file_already_uploaded($file_name, $db2)
{
 
 $query = "SELECT * FROM rotator WHERE zdjecie = '".$file_name."'";
 $statement = $db2->prepare($query);
 $statement->execute();
 $number_of_rows = $statement->rowCount();
 if($number_of_rows > 0)
 {
  return true;
  
 }
 else
 {
  return false;
 }
}

 

1
komentarz 16 września 2018 przez StOcK Mądrala (6,100 p.)
move_uploaded_file($nazwa_istniejacego_pliku, $sciezka_do_pliku_z_nowa_nazwa)
komentarz 16 września 2018 przez Zbigniew Andrysiak Bywalec (2,470 p.)

Czyli tak?

 $location = 'C:\xampp1\htdocs\stepbystep2\img' . $count.'.' .$file_extension;
  if(move_uploaded_file($tmp_name, $location))


gdzie

  $tmp_name = $_FILES["file"]['tmp_name'][$count];
to stara nazwa

 

komentarz 16 września 2018 przez StOcK Mądrala (6,100 p.)
Jeśli ścieżka jest po prawna to powinno działać.
komentarz 16 września 2018 przez Zbigniew Andrysiak Bywalec (2,470 p.)
W bazie zapisuje mi 0.jpg,1.jpg itd
Niestety w katalogu nie zapisuje mi się to zdjęcie.
Czyli robię coś nie tak. Robię to za pomocą Ajax, więc ciężko mi jest wyciągnąć var_dump.

$tmp_name - to stary plik - dopóki nie zacząłem mieszać było wszystko ok. Jak zacząłem zmieniać pod liczenie przestało zapisywać.

Może jest jakiś sposób wyciągnąć to co wysyłam przez ajax?
komentarz 16 września 2018 przez StOcK Mądrala (6,100 p.)
edycja 16 września 2018 przez StOcK
Tak, możesz śmiało użyć var_dump, wtedy w konsoli przeglądarki wchodzisz w Sieć (Network) i klikasz na plik do którego się odwołujesz, tam będzie zapytanie (Request) oraz odpowiedź (Response).

PS. nie używaj bezwzględnych ścieżek, bo przeniesiesz skrypt na serwer i nie będzie działać.
komentarz 16 września 2018 przez Zbigniew Andrysiak Bywalec (2,470 p.)
Hej, wiem, że nie należy używać bezwględnych ścieżek ale niestety na localhoście nie da się inaczej. Jak będę wgrywał na serwer to zmienię.

Zawartość odpowiedzi
var_dump pokazuje to co poniżej czyli $location. Szukam dalej :)
string(37) "C:\xampp1\htdocs\stepbystep2\img0.jpg"
komentarz 16 września 2018 przez Zbigniew Andrysiak Bywalec (2,470 p.)
Znalazłem

'C:\xampp1\htdocs\stepbystep2\img' . $count

Brakuje separatora. Niestety nie zapisuje nadal. Szukam dalej

'C:\xampp1\htdocs\stepbystep2\img\' . $count
komentarz 16 września 2018 przez StOcK Mądrala (6,100 p.)
<?php
$target_dir = "img/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>



<!DOCTYPE html>
<html>
<body>

<form method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload" multiple>
    <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Kompletne demo, do uploadu plików do folderu img.
Na localhoscie działa.

PS. demo nie jest moje, znalezione gdzieś w internecie wieki temu

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 211 wizyt
+1 głos
1 odpowiedź 168 wizyt
pytanie zadane 7 czerwca 2020 w PHP przez gambi Początkujący (350 p.)
0 głosów
0 odpowiedzi 369 wizyt
pytanie zadane 11 marca 2020 w C# przez czujek22 Dyskutant (7,670 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...