Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Modifica file word memorizzato in database sql express
venerdì 11 maggio 2012 - 20.12
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Geronimo79
Profilo
| Junior Member
140
messaggi | Data Invio:
ven 11 mag 2012 - 20:12
Salve amici, il mio quesito è il seguente: uso asp.net 4 e vb.net inserisco in un database sql un file word, lo apro e nel momento in cui apporto delle modifiche ad esso vorrei che mi rimanessero salvate! Invece se salvo il documento e lo riapro mi riparte dal suo stato originale. Non ho idea di come procedere....è possibile ovviare al problema? Grazie a tutti.
Gluck74
Profilo
| Guru
1.359
messaggi | Data Invio:
lun 14 mag 2012 - 11:05
ciao,
c'è un problemino di fondo per quello che devi fare:
Quando apri un file da un browser, vuol dire che hai cliccato su un link o qualcosa del genere per richiedere il file al server.
Il file richiesto, viene inviato al browser (client), che effettua il download e lo salva localmente (temporary internet file).
Quindi le modifiche che tu effettui, le fai localmente. Quando chiudi, hai perso le modifiche.
Quello che dovresti fare è questo:
1 - Permettere il download del file
2 - Modificare il file localmente
3 - Effettuare un upload sul server per inviare le modifiche.
ciao
____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
Geronimo79
Profilo
| Junior Member
140
messaggi | Data Invio:
lun 14 mag 2012 - 19:16
Ciao e grazie per la risposta....avevo già implementato il tutto...questo è il codice:
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim validFileTypes As String() = {"doc", "docx"}
Dim ext2 As String = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName)
Dim isValidFile As Boolean = False
For i As Integer = 0 To validFileTypes.Length - 1
If ext2 = "." & validFileTypes(i) Then
isValidFile = True
Exit For
End If
Next
If Not isValidFile Then
Dim message2 As String = "Inserire file con estensione .doc oppure .docx !"
Dim sb2 As New System.Text.StringBuilder()
sb2.Append("<script type = 'text/javascript'>")
sb2.Append("window.onload=function(){")
sb2.Append("alert('")
sb2.Append(message2)
sb2.Append("')};")
sb2.Append("</script>")
ClientScript.RegisterClientScriptBlock(Me.GetType(), "alert", sb2.ToString())
Return
Else
Dim message3 As String = "File inserito correttamente"
Dim sb3 As New System.Text.StringBuilder()
sb3.Append("<script type = 'text/javascript'>")
sb3.Append("window.onload=function(){")
sb3.Append("alert('")
sb3.Append(message3)
sb3.Append("')};")
sb3.Append("</script>")
ClientScript.RegisterClientScriptBlock(Me.GetType(), "alert", sb3.ToString())
End If
Dim filePath As String = FileUpload1.PostedFile.FileName
Dim filename As String = Path.GetFileName(filePath)
Dim ext As String = Path.GetExtension(filename)
Dim contenttype As String = String.Empty
Select Case ext
Case ".doc"
contenttype = "File Word"
Exit Select
Case ".docx"
contenttype = "File Word"
Exit Select
End Select
Dim fs As Stream = FileUpload1.PostedFile.InputStream
Dim br As New BinaryReader(fs)
Dim bytes As Byte() = br.ReadBytes(fs.Length)
br.Close()
fs.Close()
Dim strQuery As String = "insert into tblFiles(Name, ContentType, Data) values (@Name, @ContentType, @Data)"
Dim cmd As SqlCommand = New SqlCommand(strQuery)
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = filename
cmd.Parameters.Add("@ContentType", SqlDbType.VarChar).Value = "File Word"
cmd.Parameters.Add("@Data", SqlDbType.Binary).Value = bytes
InsertUpdateData(cmd)
End Sub
Public Function InsertUpdateData(ByVal cmd As SqlCommand) As Boolean
Dim strConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString()
Dim con As New SqlConnection(strConnString)
cmd.CommandType = CommandType.Text
cmd.Connection = con
Try
con.Open()
cmd.ExecuteNonQuery()
Return True
Catch ex As Exception
Response.Write(ex.Message)
Return False
Finally
con.Close()
con.Dispose()
End Try
End Function
Public Function GetData(ByVal cmd As SqlCommand) As DataTable
Dim dt As New DataTable
Dim strConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString()
Dim con As New SqlConnection(strConnString)
Dim sda As New SqlDataAdapter
cmd.CommandType = CommandType.Text
cmd.Connection = con
Try
con.Open()
sda.SelectCommand = cmd
sda.Fill(dt)
Return dt
Catch ex As Exception
Response.Write(ex.Message)
Return Nothing
Finally
con.Close()
sda.Dispose()
con.Dispose()
End Try
End Function
Protected Sub download(ByVal dt As DataTable)
Dim bytes() As Byte = CType(dt.Rows(0)("Data"), Byte())
Response.Buffer = True
Response.Charset = ""
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.ContentType = dt.Rows(0)("ContentType").ToString()
Response.AddHeader("content-disposition", "attachment;filename=" & dt.Rows(0)("Name").ToString())
Response.BinaryWrite(bytes)
Response.Flush()
Response.End()
End Sub
Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim strQuery As String = "select Name, ContentType, Data from tblFiles where id=@id"
Dim cmd As SqlCommand = New SqlCommand(strQuery)
cmd.Parameters.Add("@id", SqlDbType.Int).Value = GridView1.SelectedValue
Dim dt As DataTable = GetData(cmd)
If dt IsNot Nothing Then
download(dt)
End If
End Sub
Quello che dici tu è esattamente quello che non voglio fare....
Io client apro il file nel database situato nel server lo modifico e lo vorrei salvare direttamente senza farne una copia e reinserirlo sul server...
Probabilmente non è possibile però...
Un saluto. :-)
Gluck74
Profilo
| Guru
1.359
messaggi | Data Invio:
mar 15 mag 2012 - 10:14
>Quello che dici tu è esattamente quello che non voglio fare....
>Io client apro il file nel database situato nel server lo modifico
>e lo vorrei salvare direttamente senza farne una copia e reinserirlo
>sul server...
>Probabilmente non è possibile però...
>Un saluto. :-)
Esatto, non è possibile con una semplice pagina web.
ciao buon lavoro
____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
Torna su
Stanze Forum
Elenco Threads
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 !