Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    spostare file da db al server

    ho un problema urgentissimo!

    dovrei spostare 200 file che sono salvati su un db [quindi in campo blob] in una cartella sul server. Qualcuno mi sa dare per favore dei suggerimenti?

    Grazie mille!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    se li devi spostare da un db ad un'altro il sistema migliore è sicuramente quello di prendere direttamente i file del database

    quindi credo che dovrai chiedere al tuo amministratore oppure fare un dump da riga di comando ssh ma cmq devi chiedere all'amministratore

  3. #3
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Oppure potresti creare uno script che estragga dal db i file e che li scriva sul disco, questo lo puoi fare senza chiedere il permesso a nessuno, a patto che Apache abbia i permessi di scrittura su una cartella. E' una cosa che non ho mai fatto, sicuramente funziona, ma non ho nulla di pronto, comunque non dovrebbe essere una cosa molto complessa.

  4. #4
    si io intendevo proprio spostare dei file da un db ad una cartella sul server, non da un db all'altro, solo che anche io mi trovo un pò impreparato di fronte a questo.
    il problema è il fatto che la gestione dei file su db è diventata ingestibile in quanto il cliente carica file troppo grandi e ogni volta mi va in time-out lo script tentando di recuperare quei determinati file. dandomi l'errore max allowed sized, se aumento il limite di memoria dal file di configurazione non mi dà nessun errore, ma devo portarlo dai 12M attuali i 40M perché funzioi, e giustamente il mio capo non è molto contento

    quindi, chiedo a voi, per favore, se qualcuno saprebbe farmi un esempio di come "spostare" i file su una cartella del server.

    i dati, come avrete capito, sono salvati in un campo blob su un db, e oltre al dato binario sono salvati il tipo di file, le dimensioni e il nome.

    ringrazio per le risposte finora ricevute. Spero che qualcuno mi sappia aiutare!

    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  5. #5
    non so se può servire, ma questo è il file che uso per scaricare i file dal db e mostrarli:

    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    include(
    "config.inc.php");
    $db mysql_connect($db_host$db_user$db_password)or die('connessione: '.mysql_error());
    mysql_select_db($db_name$db)or die('database: '.mysql_error());

    $query "SELECT blobType, blobData FROM file WHERE id_file = ".$_GET['id'];
    $result mysql_query($query,$db) or die("Couldn't get file list");
        
    if(
    mysql_num_rows($result) == 1)
    {
      
    $fileType = @mysql_result($result0"blobType");
      
    $fileContent = @mysql_result($result0"blobData");
            
      
    header("Content-type: $fileType");
      echo 
    $fileContent;
    }
    ?>
    il file sta quindi nella variabile $fileContent, ma non riesco proprio a muovermi!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  6. #6
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    come dicevo non l'ho mai fatto, ma credo che si debba giocare con fopen fwrite ecc. dai una vista alle funzioni filesystem http://it2.php.net/manual/it/ref.filesystem.php per il resto credo che tu debba solo creare un file e dargli come contenuto $fileContent, ma non so se per il tipo di file basta dargli l'estensione giusta o bisogna fare qualcos'altro, su questo non so aiutarti

  7. #7
    ti ringrazio per la risposta. ormai avevo dimenticato questo thread

    comunque ho risolto, ho fatto praticamente un lavoro che mi ha portato via tutta la giornata di ieri, perché era piuttosto laborioso, ma non vedevo alternative.
    ho salvato tutti i file presenti del db in una cartella sul mio pc, e poi da questa ho fatto l'upload sul server.
    un pò laborioso ok, ma è l'unica cosa che mi è venuta in mente

    grazie lo stesso!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  8. #8
    dunque, riporto su la discussione perché ho ancora lo stesso problema con un altro database.

    con l'altro avevo risolto spostando a mano il tutto, ma stavolta è impensabile, visto che i file sono 5000 e non 200 come l'altra volta.

    ho provato a cercare dove mi era stato detto, ma non sono riuscito a trovare niente; penso che il quesito si sia capito.

    io ora ho una tabella della quale vi posto il dump sql:
    codice:
    CREATE TABLE `file` (
      `id_file` bigint(20) NOT NULL auto_increment,
      `blob_data` longblob NOT NULL,
      `blob_title` varchar(30) NOT NULL default '',
      `blob_type` varchar(30) NOT NULL default '',
      `blob_name` varchar(30) NOT NULL default '',
      `blob_size` bigint(20) NOT NULL default '0',
      `prodotto` bigint(20) NOT NULL default '0',
      `speciale` varchar(30) NOT NULL default '',
      PRIMARY KEY  (`id_file`),
      FULLTEXT KEY `speciale` (`speciale`)
    )
    io mi sono creato una tabella con semplicemente questi campi:
    codice:
    CREATE TABLE `file_aree` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `url` varchar(255) NOT NULL default '',
      `nome` varchar(100) NOT NULL default '',
      `tipo` varchar(100) NOT NULL default '',
      `size` bigint(20) NOT NULL default '0',
      `prodotto` bigint(20) NOT NULL default '0',
      `speciale` varchar(30) NOT NULL default '',
      PRIMARY KEY  (`id`)
    )
    praticamente uguale a prima, sol oche al posto del campo blob c'è il campo url, ora, contando che naturalmente devo mantenere le associazioni che ho ora, come faccio a spostare tutti i miei file dal database attuale ad una cartella sul server?

    spero sia chiaro il problema e spero di ottenere risposta, magari un esempio, è una cosa che non ho mai fatto e non vorrei far castronerie, ho letto vari documenti ma non ci ricavo niente...

    naturalmente se nel frattempo trovo una soluzione la posto!

    grazie mille!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  9. #9
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Il procedimento è abbastanza semplice:

    - crei il file vuoto
    - ci scrivi sopra il contenuto del blob

    Lo avevo fatto in uno script ma non lo trovo più, comunque non e difficile.

  10. #10
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Trovato:

    codice:
    $query1="SELECT BLOB,NOME_FILE FROM FILE WHERE ...";
    $q1=mysql_query($query1,$link) or die("Impossibile eseguire la query $query1
    Errore:".mysql_error());
    while( $file_db=mysql_fetch_assoc($q1) ){
    $data=$file_db['BLOB'];
    // creazione file
    $file=$file_db['NOME_FILE'];
    touch($file) or die("Impossibile creare il file");
    // apro il file in scrittura
    $fp=fopen($file, 'wb' ) or die("Impossibile aprire il file in lettura"); // Su sistemi che differenzino fra file binari e di testo (come Windows) il file deve essere aperto includendo 'b' nel paramentro mode di fopen(). 
    // scrivo nel file
    fwrite( $fp , $data ) or die("Impossibile scrivere nel file");
    // chiusura file
    fclose( $fp ) or die("Impossibile chiudere il file");
    }
    Basta solo adattarlo per la tua tabella.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.