• 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

Object Storage Arubacloud
0 głosów
221 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ź 170 wizyt
pytanie zadane 7 czerwca 2020 w PHP przez gambi Początkujący (350 p.)
0 głosów
0 odpowiedzi 387 wizyt
pytanie zadane 11 marca 2020 w C# przez czujek22 Dyskutant (7,670 p.)

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...