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!![]()
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
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![]()
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.
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
non so se può servire, ma questo è il file che uso per scaricare i file dal db e mostrarli:
il file sta quindi nella variabile $fileContent, ma non riesco proprio a muovermi!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($result, 0, "blobType");
$fileContent = @mysql_result($result, 0, "blobData");
header("Content-type: $fileType");
echo $fileContent;
}
?>
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
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
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
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:
io mi sono creato una tabella con semplicemente questi campi: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`) )
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?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`) )
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
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.
Trovato:
Basta solo adattarlo per la tua tabella.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"); }