L'upload se ho capito bene avviene nel filesystem e non ne database, la cosa migliore che puoi fare è spezzare la cosa in in due file, uno presente il form di inserimento, e l'altro carica l'immagine.
Il trucco è usare un iframe, ti spiego
Nella pagina col form...
HTML:
<form id="file_upload_form" method="post" action="upload_file.php" enctype="multipart/form-data">
<fieldset><legend> Inserisci i dati come richiesto </legend>
<p>
<label for="immagine">Immagine </label>
<input type="file" id="immagine" name="upfile" value="">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
</p>
<iframe id="upload_target" name="upload_target"></iframe>
<p><input type="submit" name="invia" value="INVIA"></p>
<script>
function init() {
document.getElementById('file_upload_form').onsubmit=function() {
document.getElementById('file_upload_form').target = 'upload_target'; //'upload_target' is the name of the iframe
}
}
window.onload=init;
</script>
</fieldset>
</form>
Questo form manda ad un altro file che fa tutto il lavoro sporco l'immagine da salvare ( vedi tu se su filesystem o su database, io preferirei usare solo quest'ultimo ).
Il form lavora così: in action c'è il file di destinazione, ma lo script che vedi in fondo redireziona l'output nell'iframe, in pratica quando premi invio invece di finire su un'altra pagina, il browser rimane lì dove sta e tutti i messaggi finiscono nell'iframe.
Questo come vedi carica solamente l'immagine, ma tu mettici pure gli elementi di input per il Titolo, una didascalia, quello che vuoi e prima di inviare il tutto fagli fare un controllo preventivo per evitare che qualcuno invii al database immagini senza titolo o titoli senza immagini
Ovviamente nel file remoto ci infili tutta la procedura di verifica remota, perché è meglio non fidarsi deli utenti, quindi se qualcuno invia campi obbligatori in bianco, tu mandi un messaggio di attenzione, che appare nell'iframe, mentre la pagina non efettuando un refresh rimane ferma così com'è.
Questo è il sistema di caricamento più usato perché non usa ajax, è veloce e similmente ad ajax la pagina sembra modificarsi dinamicamente, anche se c'è il trucco.
Insomma buono studio
Ah dimenticavo, se vuoi far apparire l'immagine appena caricata, la fai caricare nell'iframe.