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

Upload obrazka z url

0 głosów
404 wizyt
pytanie zadane 27 października 2016 w PHP przez Captivity Obywatel (1,030 p.)

Witam,

Nie mogę nigdzie znaleźć odpowiedzi, jak w Symfony2 zrobić upload obrazka z url. Mam upload obrazka zwykły, który działa bez zarzutu. Jak dorobić do tego upload z URL?

Formularz:

->add('title', TextType::class, array(
                'label' => 'Tytuł',
                'attr' => array(
                    'placeholder' => 'Tytuł'
                )
            ))
            ->add('pictureFile', FileType::class, array(
                'label' => 'Obrazek'
            ))

Encja:

/**
     * Get picture
     *
     * @return string 
     */
    public function getPicture() {
        return Pic::UPLOAD_DIR . $this->picture;
    }

    public function getPictureFile() {
        return $this->pictureFile;
    }

    public function setPictureFile(UploadedFile $pictureFile) {
        $this->pictureFile = $pictureFile;
        $this->updateDate = new \DateTime();
        return $this;
    }

 /**
     * @ORM\PostPersist
     * @ORM\PostUpdate
     */
    public function postSave() {
        if (NULL !== $this->getPictureFile()) {
            $this->getPictureFile()->move($this->getUploadRootDir(), $this->picture);
            unset($this->pictureFile);

            if (isset($this->pictureTemp)) {
                unlink($this->getUploadRootDir() . '/' . $this->pictureTemp);
                unset($this->pictureTemp);
            }
        }
    }

 

komentarz 28 października 2016 przez efiku Szeryf (75,160 p.)
Moim zdaniem najpierw musisz pobrać z url  obrazek (curl?), a następnie go przenieść do folderu z obrazkami i dodać wpis do bazy.

1 odpowiedź

+1 głos
odpowiedź 30 października 2016 przez mendieta358 Nowicjusz (160 p.)

Jak widzę, symfony2  nie ma wbudowanej takiej funckji. http://symfony-docs.pl/book/forms.html#book-forms-type-reference

Więc trzeba to napisać samemu, na twoim miejscu zrobiłbym inputa: text lub url. Pobrał wartość z niego.

Pierwszy sposób
copy('http://www.google.co.in/intl/en_com/images/srpr/logo1w.png', '/tmp/file.jpeg');

Drugi sposób
$content = file_get_contents("http://www.google.co.in/intl/en_com/images/srpr/logo1w.png");
//Store in the filesystem.
$fp = fopen("/location/to/save/image.jpg", "w");
fwrite($fp, $content);
fclose($fp);

 

Oczywiście jeszcze potrzebujesz zapisać url do bazy danych, i albo zapisujesz całą ścieżkę albo tylko nazwe pliku i odwołujesz się w widoku tak: "/upload/images/{{Object.getImage()}}". Mam nadzieje, że pomogłem.

1
komentarz 30 października 2016 przez efiku Szeryf (75,160 p.)
edycja 30 października 2016 przez efiku

Czemu nie linkujesz bezpośrednio do dokumentacji, tylko do spolszczenia, które jest daleko w tyle?

http://symfony.com/doc/2.8/forms.html#built-in-field-types

Skoro używasz file_get_contents, to jest funkcja file_put_contents. (Uwaga na dużych rozmiarów zdjęcia, mogą wysypać skrypt więc albo copy, albo curl) 

Twój kod pochodzi z tej odp: http://stackoverflow.com/questions/6306935/php-copy-image-to-my-server-direct-from-url  - warto się wkopać w to co tam piszą :)

Teraz jest ok.

Podobne pytania

0 głosów
0 odpowiedzi 523 wizyt
pytanie zadane 30 kwietnia 2021 w PHP przez misiek.sz Bywalec (2,050 p.)
0 głosów
2 odpowiedzi 458 wizyt
pytanie zadane 29 marca 2021 w PHP przez dee Początkujący (360 p.)
0 głosów
0 odpowiedzi 156 wizyt
pytanie zadane 20 czerwca 2020 w PHP przez bulgotnik86 Gaduła (3,040 p.)

93,600 zapytań

142,524 odpowiedzi

322,993 komentarzy

63,085 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

Kursy INF.02 i INF.03
...