Comment télécharger un fichier depuis https

Résolu
cs_JGD Messages postés 48 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 6 décembre 2012 - 13 sept. 2012 à 09:06
 Utilisateur anonyme - 28 sept. 2012 à 02:42
Bonjour,

J'ai des fichiers déposés sur le cloud et je souhaiterais les copier sur mon poste (et réciproquement). Malheureusement je n'y arrive pas. J'ai essayé le code suivant:

Dim login As String = "monlogin"
        Dim MotDePasse As String = "monmotdepasse"
        Dim AdresseCible As New UriBuilder
        AdresseCible.Path = "/vb/dotnetfx.exe" 'fichier à copier
        AdresseCible.Host = "https://skydrive.live.com"
        AdresseCible.UserName = login
        AdresseCible.Password = MotDePasse
        AdresseCible.Port = 1 
        Dim AdresseSource As String = "C:\dotnetfx.exe"
        Try
           My.Computer.Network.DownloadFile(AdresseCible.Uri, AdresseSource)
        Catch
           MsgBox("Erreur de connexion")
        End Try        


Ne connaissant rien aux ports, j'ai essayé toutes les valeurs allant de 1 à 10000 pour AdresseCible.Port car quand je ne mettais pas de Try, j'avais un message d'erreur de port.
Pour la variable AdresseCible.Path, j'ai aussi essayé "//vb/dotnetfx.exe" et "https://skydrive.live.com"/vb/dotnetfx.exe" mais ça ne marche pas mieux.


Merci d'avance pour vos éclaicissements.

GIGADEP

11 réponses

cs_JGD Messages postés 48 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 6 décembre 2012
22 sept. 2012 à 10:23
Bonjour,
Après 10 jours de galère, j'ai enfin trouvé d'où venait le problème. J'essayais de copier un fichier à la racine du lecteur C: alors qu'il aurait fallu les droits administrateur pour le faire. J'ai changé C:\dotnetfx.exe par un sous-dossier C:\Dossier\dotnetfx.exe et cette fois, ça marche...

GIGADEP
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 sept. 2012 à 14:10
Salut

Que vaut AdresseCible.Uri ?

Pour info, Download suppose que tu veux rapatrier un fichier depuis le Net juste chez toi (sinon, c'est un Updload).
Dans ce cas, le site est la source, et ton fichier local est la cible.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 sept. 2012 à 15:15
As-tu essayé sur supprimer le https:// d'entête ?
La doc dit qu'il faut y mettre le nom d'hôte ou l'IP.
J'ai fait un test simple et, en effet, c'est l'objet qui s'occupe de mettre l'entête http.
D'ailleurs, quand on place le http:// ou https:// devant ce nom d'hôte, on obtient une erreur "URI non valide : Impossible d'analyser le nom d'hôte".
Cette option va dans Scheme.

Je t'engage vivement à aller lire la doc de l'aide !
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 sept. 2012 à 15:31
Es-tu sûr que ce ne soit FTP qu'il faille utiliser ?
Quelle est la protection .htaccess de ce répertoire (si applicable au Cloud) ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JGD Messages postés 48 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 6 décembre 2012
13 sept. 2012 à 21:59
Bonsoir,
Je n'ai rien mis dans AdresseCible car, quand je mets quelque chose, il m'affiche "Impossible de convertir une valeur de type 'String' en 'System.Uribuilder'".
J'ai essayé d'enlever https dans host, mais ça ne change rien.
Concernant l'aide, j'ai essayé de regarder mais je ne la comprends pas. Les propriétés sont obscures pour moi, je ne sais pas exactement quoi mettre (host, port, path, ...). Rien de ce que j'ai essayé ne fonctionne.
Si tu as un exemple qui marche, je suis preneur.
Le problème est peut-être qu'il n'est pas possible de procéder de cette manière avec le cloud Skydrive...


GIGADEP
0
Utilisateur anonyme
14 sept. 2012 à 00:14
Bonsoir,

Le problème est peut-être qu'il n'est pas possible de procéder de cette manière avec le cloud Skydrive

Tu peux accéder à SkyDrive par son API

Salut jack
0
cs_JGD Messages postés 48 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 6 décembre 2012
14 sept. 2012 à 11:39
GIGADEP
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
14 sept. 2012 à 13:27
"Impossible de convertir une valeur de type 'String' ..."
Parce que les conversions de type ne sont pas implicites.
Il suffit d'ajouter .ToString derrière.

Comme dans toute url, il ne faut pas d'espace ou d'accent dans le chemin ou le nom du fichier. Est-ce bien ton cas ?
Sinon, il te faut transformer ces caractères spéciaux en code hexa - voir <cette snippet>
Les min/maj sont elles aussi importantes.
0
cs_JGD Messages postés 48 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 6 décembre 2012
14 sept. 2012 à 15:24
Bonjour,

Mon précédent message n'est pas passé, il est resté vierge. Je remerciais banana32 et jack pour l'aide apportée. Mais je suis toujours aussi perdu.
Jack: - je ne sais pas s'il faut utiliser ftp et je ne sais pas où trouver la protection htaccess du dossier.
- A quel endroit dois-je mettre .ToString?
banana32: - je n'ai jamais utilisé d'API, comment l'intègre-t-on dans un programme? De plus, sur le lien que tu m'as envoyé, on parle de C# mais pas de VB.Net.
- le problème de l'API c'est aussi que je suis alors obligé d'utiliser Skydrive. Si je veux utiliser un autre cloud, ce n'est pas possible (mais si ça marche ce serait déjà une première étape).

Si quelqu'un a un code qui marche pour récupérer des données distantes, je suis preneur.

J'ai essayé le code suivant:

Sub EssaiCopieFichier()
        Dim login As String = "monlogin"
        Dim MotDePasse As String = "monmotdepasse"
        Dim AdresseCible As New UriBuilder
        AdresseCible.Path = "/vb/dotnetfx.exe"
        AdresseCible.Host = "skydrive.live.com"
        AdresseCible.UserName = login
        AdresseCible.Password = MotDePasse
        Dim AdresseSource As String = "C:\dotnetfx.exe"
        Try
            My.Computer.Network.DownloadFile(AdresseCible.Uri, AdresseSource, login, MotDePasse, True, 100)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 End Sub

J'obtiens le code suivant: "URI non valide: port URI non valide"

J'ai aussi essayé la commande suivante:
My.Computer.Network.DownloadFile("http://" & login & ":" & MotDePasse & "@skydrive.live.com/vb/dotnetfx.exe", AdresseSource)

à la place de la commande:
My.Computer.Network.DownloadFile(AdresseCible.Uri, AdresseSource, login, MotDePasse, True, 100)

Là, l'erreur est la suivante:"l'adresse n'est pas une adresse valide de fichier distant. Une adresse valide doit comporter un protocole, un chemin d'accès et un nom de fichier. Nom du paramètre: adress"

GIGADEP
0
cs_JGD Messages postés 48 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 6 décembre 2012
22 sept. 2012 à 17:07
Finalement, après vérifications, le code marche pour télécharger depuis le cloud vers le PC mais pas l'inverse. Si je remplace
My.Computer.Network.DownloadFile("http://" & login & ":" & MotDePasse & "@skydrive.live.com/vb/dotnetfx.exe", AdresseSource)
par
My.Computer.Network.DownloadFile("http://" & login & ":" & MotDePasse & "@skydrive.live.com/vb/dotnetfx.exe", AdresseSource)
, j'obtiens un message d'erreur.

GIGADEP
0
Utilisateur anonyme
28 sept. 2012 à 02:42
Bonjour,


J'ai des fichiers déposés sur le cloud


Dire que l'on nous a vendu le micro-ordinateur en nous disant que nous ne dépenderions plus des "mainframes", des terminaux et des lignes téléphoniques.
0
Rejoignez-nous