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

Upload zdjęć na serwer i ścieżka do bazy danych, jQuery File Upload

0 głosów
283 wizyt
pytanie zadane 27 listopada 2017 w PHP przez mi-20 Stary wyjadacz (13,250 p.)

Witam, podobny a nawet ten sam temat był już na forum jednak jest zablokowany, nie rozwiązany i jest w innym dziale, postanowiłem dodać nowy. Chciałbym skonfigurować wtyczkę wymienioną w tytule z bazą danych. W pewnym stopniu mi się to udało, do bazy wrzucany jest nazwa, rozmiar i typ, dodatkowe trzy kolumny to url, tytuł i opis do nich dodawana jest wartość NULL, najbardziej zależy mi na kolumnie url, chciałbym aby trafiła tam ścieżka dostępu do pliku, tzn http://...

jak to osiągnąć? Skorzystałem z gotowego kodu zawartego w dokumentacji wtyczki, dostępne tutaj:

https://github.com/blueimp/jQuery-File-Upload/wiki/PHP-MySQL-database-integration

a kod PHP wygląda tak:

<?php
$options = array(
    'delete_type' => 'POST',
    'db_host' => 'localhost',
    'db_user' => 'root',
    'db_pass' => '',
    'db_name' => 'uploadimg',
    'db_table' => 'files'
);

error_reporting(E_ALL | E_STRICT);
require('UploadHandler.php');

class CustomUploadHandler extends UploadHandler {

    protected function initialize() {
    	$this->db = new mysqli(
    		$this->options['db_host'],
    		$this->options['db_user'],
    		$this->options['db_pass'],
    		$this->options['db_name']
    	);
        parent::initialize();
        $this->db->close();
    }

    protected function handle_form_data($file, $index) {
    	$file->title = @$_REQUEST['title'][$index];
    	$file->description = @$_REQUEST['description'][$index];
    }

    protected function handle_file_upload($uploaded_file, $name, $size, $type, $error,
            $index = null, $content_range = null) {
        $file = parent::handle_file_upload(
        	$uploaded_file, $name, $size, $type, $error, $index, $content_range
        );
        if (empty($file->error)) {
			$sql = 'INSERT INTO `'.$this->options['db_table']
				.'` (`name`, `size`, `type`, `title`, `description`)'
				.' VALUES (?, ?, ?, ?, ?)';
	        $query = $this->db->prepare($sql);
	        $query->bind_param(
	        	'sisss',
	        	$file->name,
	        	$file->size,
	        	$file->type,
	        	$file->title,
	        	$file->description
	        );
	        $query->execute();
	        $file->id = $this->db->insert_id;
        }
        return $file;
    }

    protected function set_additional_file_properties($file) {
        parent::set_additional_file_properties($file);
        if ($_SERVER['REQUEST_METHOD'] === 'GET') {
        	$sql = 'SELECT `id`, `type`, `title`, `description` FROM `'
        		.$this->options['db_table'].'` WHERE `name`=?';
        	$query = $this->db->prepare($sql);
 	        $query->bind_param('s', $file->name);
	        $query->execute();
	        $query->bind_result(
	        	$id,
	        	$type,
	        	$title,
	        	$description
	        );
	        while ($query->fetch()) {
	        	$file->id = $id;
        		$file->type = $type;
        		$file->title = $title;
        		$file->description = $description;
    		}
        }
    }

    public function delete($print_response = true) {
        $response = parent::delete(false);
        foreach ($response as $name => $deleted) {
        	if ($deleted) {
	        	$sql = 'DELETE FROM `'
	        		.$this->options['db_table'].'` WHERE `name`=?';
	        	$query = $this->db->prepare($sql);
	 	        $query->bind_param('s', $name);
		        $query->execute();
        	}
        } 
        return $this->generate_response($response, $print_response);
    }

}

$upload_handler = new CustomUploadHandler($options);

 

z góry dzięki za pomoc :)

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

Podobne pytania

0 głosów
0 odpowiedzi 332 wizyt
pytanie zadane 1 listopada 2017 w PHP przez niezalogowany
0 głosów
0 odpowiedzi 248 wizyt
pytanie zadane 1 listopada 2017 w PHP przez niezalogowany
0 głosów
0 odpowiedzi 205 wizyt
pytanie zadane 19 kwietnia 2017 w JavaScript przez arek01996 Stary wyjadacz (12,080 p.)

93,772 zapytań

142,730 odpowiedzi

323,383 komentarzy

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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...