Copiare immagini server to server

mercoledì 09 settembre 2009 - 10.19

antonio1960 Profilo | Newbie

Salve a tutti,

sono nuovo nella comunità e prima di tutto mi preme salutare i componenti della stessa, poi spero di postare nella sezione corretta.

Espongo il mio problema:

Mettiamo che su un server qualsiasi sia disponibile un'immagine es.
http://www.dotnethell.it/img/newlogo3.png

Io vorrei avere una pagina asp (aspx) con codice VB (di C sono completamente digiuno)
che mi permettesse di copiare l'immagine in una cartella specifica del mio sito con un nome da me scelto.

in rete ho tovato questo, che non risolve il mio problema

1) Perchè non sono stato capace di scrivere preventivamente il nome del file da scaricare all'interno della [input type="file"] ma devo obbligatoriamente selezionarlo
2) Perchè permette di selezionare solo file presenti sul client

<%@ page language="VB" %>
<script runat="Server">
Private Sub Upload(Sender as Object, e as EventArgs)
If Len(Trim(File.Value)) = 0 Then
Messaggio.Text = "Sfoglia per caricare un file"
ElseIf File.PostedFile.ContentType <> "image/pjpeg" Then
Messaggio.Text = "Puoi caricare solo file JPEG"
ElseIf File.PostedFile.ContentLength > 100000 Then
Messaggio.Text = "Il file non può superare i 100 Kb"
Else
Dim s() As String = Split(File.Value, "\")
File.PostedFile.SaveAs(Server.MapPath("files/" & s(UBound(s))))
Messaggio.Text = "File caricato con successo"
End If
End Sub
</script>
<html>
<head>
<title>Upload di immagini JPG in ASP.NET</title>
</head>
<body>
<form id="Modulo" method="post" enctype="multipart/form-data" runat="server">
<input type="file" id="File" runat="server">
<asp:Button runat="server" Text="Upload" OnClick="Upload" />
<br><br>
<asp:label id="Messaggio" runat="Server" />
</form>
</body>
</html>


Grazie a tutti dell'aiuto e delle indicazioni ce vorrete darmi

freeteo Profilo | Guru

Ciao,
se non ho capito male tu all'immagine dell'altro server ci puoi arrivare tramite un Url, quindi ti basta fare una chiamata a quell'url e salvarlo in un path del primo server (questa volta locale), quindi un codice di questo tipo:

... using System.Net; using System.IO; ... WebClient cli = new WebClient(); byte[] bytes = cli.DownloadData("http://.../newlogo3.png"); File.WriteAllBytes(@"c:\file.png", bytes);

o qualcosa di questo genere...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

antonio1960 Profilo | Newbie

Grazie della dritta, ho risoloto così

in web.config ho aggiunto nello spaziodei nomi

<add namespace="System.IO"/>
<add namespace="System.Net"/>

il codice l'ho modifiato così partendo da presupposto che il mio spazio web è su Aruba

Dim cli As New WebClient
Dim Bytes() As Byte

Bytes = cli.DownloadData("http://www.--------------")
File.WriteAllBytes(Server.MapPath("public/mydir/nomefile.jpg"), Bytes)



Grazie ancora




freeteo Profilo | Guru

><add namespace="System.IO"/>
><add namespace="System.Net"/>
ok li hai aggiunti nella pagina perchè probabilmente hai il codice "Inline" e non "Behind" (su file esterno)


>il codice l'ho modifiato così partendo da presupposto che il
>mio spazio web è su Aruba
ok, attento allora che hai accesso in scrittura solo in alcune directory ben definite (come la "public")


> Dim cli As New WebClient
> Dim Bytes() As Byte
ok, parliamo in vb.net , io ti avevo postato il codice in C#


>Grazie ancora
di nulla, siamo qui per questo.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

antonio1960 Profilo | Newbie

><add namespace="System.IO"/>
><add namespace="System.Net"/>
>>ok li hai aggiunti nella pagina perchè probabilmente hai il codice "Inline" e non "Behind" (su file esterno)>

li ho aggiunti nella webconfig perchè ' li che ho tutti i nomespace



>il codice l'ho modifiato così partendo da presupposto che il
>mio spazio web è su Aruba
>>ok, attento allora che hai accesso in scrittura solo in alcune directory ben definite (come la "public")

Non solo, nella cartella public scrivendo non utilizzando un FTP ma da pagine interne al sito stesso, dopo circa 150 file da errore (in FTP no) in sottocartelle di public con vi è limite o meglio io ho sottocartelle anche con 900 file utogenerate dal sito stesso e per ora nessun disguido



> Dim cli As New WebClient
> Dim Bytes() As Byte
>>ok, parliamo in vb.net , io ti avevo postato il codice in C#

mel mio primo post avevo scritto:
Io vorrei avere una pagina asp (aspx) con codice VB (di C sono completamente digiuno)



Va be digiuno digiuno proprio no però insomma per queste aplicazioni prefeisco VB

Il tuo suggerimento comunque è stato veramente prezioso

Ciao
Antonio

freeteo Profilo | Guru

>mel mio primo post avevo scritto:
>Io vorrei avere una pagina asp (aspx) con codice VB (di C sono completamente digiuno)
>Va be digiuno digiuno proprio no però insomma per queste aplicazioni prefeisco VB
ok, il codice .net è molto simile nei vari linguaggi, perchè tutti parlano con il framework, in particolare tra vb.net e C#, quindi ti può tornare utile saltare tra uno e l'altro...pensa che addirittura ci sono traduttori da uno all'altro come questo:
http://www.carlosag.net/Tools/CodeTranslator/


>Il tuo suggerimento comunque è stato veramente prezioso
>Ciao
>Antonio
ok, ciao.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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