UPLOAD E SALVATAGGIO IMMAGINI IN UN DB ACCESS

venerdì 17 settembre 2004 - 10.57

boccia Profilo | Newbie

HO BISOGNO DELLO SCRIPT CHE MI FA SALVARE
UN'IMMAGINE IN UNA TABELLA DI UN DB DI ACCESS.

GRAZIE IN ANTICIPO

lorecosta Profilo | Junior Member

Ciao,
lo script che fa quello di cui hai bisogno lo ho allegato al messaggio, ma in generale ti dico che io preferisco non inserire direttamente le immagini all'interno del db, ma piuttosto scrivere in un campo il percorso in cui ho salvato l'immagine, per poterla poi richiamare al momento di doverla mostrare.

Ciao

boccia Profilo | Newbie

dove hai messo l'allegato?

lorecosta Profilo | Junior Member

Ciao,
lo script che fa quello di cui hai bisogno lo ho allegato al messaggio, ma in generale ti dico che io preferisco non inserire direttamente le immagini all'interno del db, ma piuttosto scrivere in un campo il percorso in cui ho salvato l'immagine, per poterla poi richiamare al momento di doverla mostrare.

Ciao

lorecosta Profilo | Junior Member

Scusa, forse è meglio se ti incollo il codice qui sotto.

<%@ Page Language="c#" %>
<%@ import Namespace="System" %>
<%@ import Namespace="System.IO" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<SCRIPT runat="server">

void BtnUp_Click(Object s, EventArgs e) {
int dimensione=inputFile.PostedFile.ContentLength;

if (dimensione>0) {
string db, strsql;
Byte[] FileByteArray= new Byte[dimensione];
Stream StreamObject=inputFile.PostedFile.InputStream;
StreamObject.Read(FileByteArray, 0, dimensione);
db="immagini.mdb";
OleDbConnection myconnection=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Request.MapPath(db));
strsql="insert into Tabella1(descrizione, immagine, nome, size2, contenttype) values(?, ?, ?, ?, ?)";
OleDbCommand mycommand = new OleDbCommand(strsql, myconnection);
mycommand.Parameters.Add("@descrizione", OleDbType.VarChar, 100).Value=descrizione.Text;
mycommand.Parameters.Add("@immagine", OleDbType.Binary, dimensione).Value=FileByteArray;
mycommand.Parameters.Add("@nome", OleDbType.VarChar, 100).Value=Path.GetFileName(inputFile.PostedFile.FileName);
mycommand.Parameters.Add("@size2", OleDbType.Integer, 100).Value=dimensione;
mycommand.Parameters.Add("@contenttype", OleDbType.VarChar, 100).Value=inputFile.PostedFile.ContentType;
myconnection.Open();
mycommand.ExecuteNonQuery();
myconnection.Close();
messaggio.Text="OK!";
}
else
{
messaggio.Text="Nessun file selezionato!";
}
}
</SCRIPT>

<form enctype="multipart/form-data" runat="server">
<strong>UTILIY PER L'UPLOAD DI IMMAGINI IN UN DATABASE IN FORMATO ACCESS</strong>

<div id="Results" align="center" runat="server" />

<p align="center">
Seleziona un'immagine sul tuo HD quindi clicca su upload:<br />
<input id="inputFile" type="file" size="40" runat="server" /><br />
Descrizione: <asp:TextBox id="descrizione" runat="server" Width="259px"></asp:TextBox>
<br /><asp:label id="messaggio" runat="server" Font-Bold="True"></asp:label>
</p>

<input id="BtnUp"value="Upload!" runat="server" onserverclick="BtnUp_Click" />
</form>


ciao

boccia Profilo | Newbie

e se invece voglio salvare sul db solo il nome del file
ricavandolo dal percorso?

lorecosta Profilo | Junior Member

in questo caso lo script è il seguente. questa volta il codice è in VB.
Il percorso in cui hai salvato il file è SFullPath, questo lo puoi salvare su un db tramite una semplice query di insert in sql.
Ricordati che per salvare un file in una cartella da web l'utente asp.net deve avere l'autorizzazione in scrittura in quella cartella.

boccia Profilo | Newbie

ti invio il mio file addfile.aspx
dovresti collegare strNomeFile alla tabella tbl_prod_foto del database foto.mdb

e poi potresti far si che cliccando sul tasto upolad la strNomeFile venga salvata
sul campo IDFoto della tabella tbl_prod_foto del database foto.mdb

grazie mille

lorecosta Profilo | Junior Member

il file non è allegato al messaggio.
comunque lo script di prima fa in modo che tu possa ottenere il percorso di un file dopo il suo upload, con questo pezzo di codice, invece scrivi sulla tabella di access.
' Dichiarazioni spazio dei nomi
imports System.data.Oledb.OleDbConnection
imports System.data.Oledb.OleDbCommand

'****************************************************************
Dim myConnection As OleDbConnection
Dim myOleCommand As OleDbCommand

myConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mdb\foto.mdb")
myOleCommand = New OleDbCommand("INSERT INTO tbl_prod_foto(IDFile) Values (strNomeFile)", myConnection)

Try
myConnection.Open()
myOleCommand.ExecuteNonQuery()

Catch myException As Exception
lblerrore.text=myException.tostring()
Finally
myConnection.Close()
End Try
In questo script mi sono attenuto alle tue indicazioni, poi naturalmente il tutto va riadattato al contesto in cui ti trovi.

Ciao

Devil Profilo | Junior Member

Ciao ragazzi,

io avrei il problema inverso: ho delle immagini memorizzate in una tabella di access e vorrei estrarle.

Sapete indicarmi come fare?

Grazie Ciao

Devil Profilo | Junior Member

Già fatto,..ho anche implementato l'esempio della microsoft sia in access97 che in access2003..stesso risultato...da quello che leggo in giro pare che nel file vengano salvati anche i metadati che access usa per i suoi scopi e pare siano sia in testa che in coda al file..ma come li individuo e li elimino?
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5