Upload automatique d'un fichier html

Résolu/Fermé
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022 - 5 déc. 2016 à 19:18
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022 - 16 déc. 2016 à 08:38
Bonsoir,


On a plusieurs petit serveurs web sous windows avec quelques collègues, rien de spécialement passionnant on s'y met petit a petit mais comme on débute un peu dans le webmastering et en Java notamment, on a mis en place un système coopératif "d'auto bug report" si je puis dire.

Voila le principe, vue que l'on a pas l'occasion de se voir tout les quatre matins, on a décidé de partager nos avancés via un fichier php ou chacun renseigne la nature de son problème, ses avancements etc...Le fichier php créer un fichier html sur notre bureau principal avec le contenu des avancés de chacun, c'est toujours plus sympa et plus lisible de faire ceci en html que le faire par fichier texte ou par mail.Ce qu'on aimerais c'est pouvoir uploader entre nous ce fichier html sur nos ftp respectifs tout les jours a partir d'une certaine heure donnée, disons 8 heure du matin pour laisser le temps a chacun de progresser dans la soirée, sans qu'on est rien besoin de le faire nous meme.


Le challenge c'est de ne pas utiliser un simple script batch pour faire ça mais d'essayer de le faire en java et en html5.Je sais pas comment mes collègues comptent procéder mais en gros mon idée a moi c'est que le fichier html doit s'auto uploader lui meme sur leurs ftp.Il doit bien y avoir un moyen de faire sa ? sinon comment ferait les développeurs pour uploader a distance des fichiers sur les serveurs.Je me suis renseigné sur le xmlhttprequest:

https://openclassrooms.com/courses/d...lhttprequest-1

Suis-je dans la bonne voie ?

- 1 Est-ce possible de faire ça en Java si oui avec quel API?
- 2 Si ce n'est pas possible quel langage utiliser ?
- 3 Dans le cas ou rien n'est possible et toujours en utilisant de la programmation, comment joindre le fichier html en pièce jointe et l'envoyer via ma boite mail a mes collègues ?

Merci a vous pour vos futures réponses,

Cordialement

A voir également:

15 réponses

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
6 déc. 2016 à 00:59
Bonjour,

Le challenge c'est de ne pas utiliser un simple script batch pour faire ça mais d'essayer de le faire en java et en html5.

Si tu veux faire ça en Java .. pourquoi poster dans le forum PHP ??


0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
6 déc. 2016 à 08:57
Bonjour,


Car je sais pas trop comment c'est faisable en faite.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
6 déc. 2016 à 09:04
0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
6 déc. 2016 à 13:53
Je te remercie, je vais voir ceci de suite.
0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
6 déc. 2016 à 19:14
ça ma l'air pas évident a mettre en place tout sa, enfin pour mes modestes connaissances en informatique.Je me suis mis avec mon pc sous debian (je suis plus habitué a linux qu'a windows, et en plus windows ça rame sévère...) et j'essai de passer par mon mail pour envoyer le fichier html.

En premier j'ai essayé avec ce petit bout de code dans une page html mais ça marche pas

<script Language = "javascript"> 

var email = "monadresse@gmail.com"
// separate addresses by commas, no spaces //
var subject = "Test"
var body = "Blabla"

document.write("<form name="form" action=\"mailto:"+ email +"\?subject="+ subject +"\&body="+ body +"\" method=\"post\" enctype=\"text/plain\"></form>")

</script>


Du coup je me suis orienté sur quelque chose qui semble plus correspondre a mes besoins, mais j'avoue que je ne sais pas quel dépendances installer sous linux pour faire fonctionner java.Voici le bout de code qui m'intéresse:

ublic class SendMail {

public SendMail() throws MessagingException {
String host = "smtp.gmail.com";
String Password = "password";
String from = "maboite@gmail.com";
String toAddress = "destinataire@gmail.com";
String filename = "/root/test/acceuil.html";
// Get system properties
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtps.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
Session session = Session.getInstance(props, null);

MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipients(Message.RecipientType.TO, toAddress);
message.setSubject("JavaMail Attachment");
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("Here's the file");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);

try {
Transport tr = session.getTransport("smtps");
tr.connect(host, from, Password);
tr.sendMessage(message, message.getAllRecipients());
System.out.println("Mail Sent Successfully");
tr.close();
} catch (SendFailedException sfe) {
System.out.println(sfe);
}
}
}`



C'est exactement ce que je veux puis en y réfléchissant bien c'est plus simple qu'un ftp a mettre en place, ça utilise javamail apparemment.Mes buts maintenant c'est:

1 - D'installer les dépendances nécéssaire a java pour coder sous ma debian
2 - Automatiser ce script pour qu'il récupère mon fichier html dans le dossier /root/test et qu'il envoi via mon mail sur les mail de mes collègues tout les matins a 8 heure.

Des suggestions pour les dépendances ? ou l'automatisation du script ?


Merci
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
6 déc. 2016 à 19:17
Heu... attend....
d'un côté tu nous parles de JAVA ...... mais d'un autre.. tu parles de coder dans une page HTML ..et là.. tu le fais en javaSCRIPT ( java <> javascript !!!!! )

Donc.... j'ai un gros doute sur ce que tu souhaites faire ... du java ... ou du javascript ???
Au passage.. le javascript ne permet pas de faire de l'upload ni de l'envoie de mail.. pour ça il faut le coder en PHP (si tu veux faire une appli web )
0

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

Posez votre question
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
6 déc. 2016 à 20:22
Excuse moi c'est vrai que c'est confus expliqué comme sa.

Je t'explique en faite on s'orientai sur le java car on essai de mettre en place une extension chrome et on a besoin de récupérer ce fichier html stocké chez le client pour inter réagir avec lui par la suite.Du coup on s'entraine a faire ça sur nos propres machine avant de mettre quoi que ce soit comme code dans l'appli.


J'espère que c'est plus clair comme sa :)
0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
Modifié par Integreur le 6/12/2016 à 20:36
Le but est de faire un petit éditeur html inline via l'appli si tu préfère, l'utilisateur rentre son type de couleurs polices etc... dans les options puis une petite feuille de style et créer en conséquence avec un document html qui lui affichera sa page sur le bureau.Si la page lui plait a ce moment elle est uploadé soit sur son mail soit sur un ftp dans le cas de la création d'un site web.Le but est qu'en quelque clique l'utilisateur conçoive l'apparence de son petit site.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
7 déc. 2016 à 00:31
Encore une fois... je te demande si le langage que tu comptes utiliser c'est le javascript ou le java ...
Car tu nous marques :

on s'orientai sur le java car on essai de mettre en place une extension chrome


Hors... pour le dev d'extensions chrome .. c'est le javascript qui est utilisé


Comment te le dire (encore une fois...) .....

Java n'est pas javascript

Le but est de faire un petit éditeur html inline

Donc pourquoi faire une extension chrome ? Inline pour moi signigie via une interface web ( donc du html / javascript / css et éventuellement selon les besoins.. du php )


Si la page lui plait a ce moment elle est uploadé soit sur son mail soit sur un ftp

Donc tu veux que l'utilisateur puisse récupérer les fichiers générés "inline" ? Pourquoi dans ce cas ne pas simplement lui proposer d'en faire un DOWNLOAD (et non 'upload' ) ?
Après.. l'envoie de mail reste possible...
Le transfert sur un Ftp par contre c'est plus "risqué" car l'utilisateur devra donner SES identifiants FTP.. pas sûr qu'il s'y risque.....

Bref... avant de vous lancer là dedans... commencez par apprendre les bonne terminologies... et déterminer quel(s) lagange(s) vous voulez utiliser...
Pour l'instant, vu les réponses que tu me donnes et les quelques tentatives d'explications embrouillées.... vous êtes loin de pouvoir commencer à coder quoi que ce soit....




0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
7 déc. 2016 à 01:25
Je voulais dire javascript au lieu de java, j'utilise le terme Java car c'est plus familier et audible que javascript mais au final je parle bien de javascript...

Donc tu veux que l'utilisateur puisse récupérer les fichiers générés "inline" ? 


Oui, le fichier générer se mettra automatiquement sur son bureau pour qu'il puisse le consulter.

Pourquoi dans ce cas ne pas simplement lui proposer d'en faire un DOWNLOAD (et non 'upload' ) ? 


L'upload c'est pour la suite, si le contenu lui plait pouf c'est envoyé sur un mail concernant son nom de domaine ou sur une boite mail plus "pro" que la sienne via son mail perso.

La partie ou je bloque c'est pour récupérer ce fichier html sur le bureau et l'envoyer en pièce jointe sur son autre mail ou sur le mail de ses collègues par exemple.

Voila
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
7 déc. 2016 à 10:37

Je voulais dire javascript au lieu de java, j'utilise le terme Java car c'est plus familier et audible que javascript mais au final je parle bien de javascript...

plus familier .... peut être ... mais ça ne veut pas dire la même chose....
La prochaine fois, si tu as la flemme d'écrire javascript ... tu n'as qu'à utiliser le vrai terme familier : JS

Oui, le fichier générer se mettra automatiquement sur son bureau pour qu'il puisse le consulter

Ben donc.. non.. tu ne peux pas.
Du moins.. pas sans une action manuelle du côté utiliser ... comme le fait de cliquer sur un lien de téléchargement.
(sinon.. imagine la faille de sécurité si n'importe quel site internet pouvait placer selon son bon vouloir des fichiers sur ton ordi...)


0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
7 déc. 2016 à 13:03
D'accord bon a savoir.On va se pencher sur le lien de téléchargement et donner un aperçu de la page avant de laisser le choix de la télécharger ou pas.

Pour l'upload automatique par mail sur une autre adresse mail c'est possible avec js? exemple: si la page convient a l'utilisateur, il la télécharge et une copie est automatiquement renvoyé sur son mail pro ?

Ou alors de faire en sorte que la page html soit accessible a distance via mot de passe ?


Le but est de faciliter le travail de groupe et le gain de temps, c'est pour sa que je pense que l'upload mail sur le mail de mes collègues peut etre avantageux.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
7 déc. 2016 à 14:39

Pour l'upload automatique par mail sur une autre adresse mail c'est possible avec js?

Non.

Comprend bien que le javascript est interprété par le navigateur de l'utilisateur (il s'exécute côté "client").
Pour l'envoie de mail, l'upload d'un fichier depuis le client vers le serveur... ça se passe côté SERVEUR. Il te faut donc un langage comme le PHP par exemple.


Le but est de faciliter le travail de groupe et le gain de temps, c'est pour sa que je pense que l'upload mail sur le mail de mes collègues peut etre avantageux.

Le problème c'est que tu envoie une "copie" du fichier .. que les gens devront coller dans leur répertoire avant de le modifier..puis devrons le renvoyer à nouveau pour le partager avec les autres ..... etc....
Et si deux personnes font des modifs en même temps...lequel dois tu garder ????
Bref....
Pour le travail collaboratif il existe des solutions déjà éprouvées .. comme GIT par exemple.
Plutôt que de vouloir bidouiller (y'a pas d'autre mot pour ce que tu conçois...) une soluce ... tourne toi vers de l'existant !


0
Bonsoir,


Excuse moi du retard.. occupé a droite a gauche j'ai pas eu le temps de m'y remettre.Le week-end arrive et je compte bosser dessus.

Plutôt que de vouloir bidouiller (y'a pas d'autre mot pour ce que tu conçois...) une soluce ... tourne toi vers de l'existant ! 


je suis d'accord mais je veux quelque chose de DIRECT qui se passe par communication privé entre le navigateur et le serveur distant.

Dans notre fichier html static, si on lui inclu un script nommé localupload.js par exemple qui communique avec un script php sur le serveur distant ça doit bien etre possible de récupérer le contenu du fichier html quand meme ??

localupload.js contiendrai donc quelque chose qui permet de lire le fichier html et d'envoyer sa sur le serveur d'un de mes collègues avec a la fin du script!
var url = url du serveur ou se situe le script php qui traitera les données a la réception


Je veux juste des pistes, des liens, qui me permettent de voir comment traiter le fichier html coté client donc moi meme, et de le traiter a sa reception coté serveur.
0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
9 déc. 2016 à 18:04
Autant pour moi j'avais oublié de me loguer sur ccm avant de poster.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
9 déc. 2016 à 18:24
un script nommé localupload.js par exemple qui communique avec un script php sur le serveur distant ça doit bien etre possible

Oui .. ça s'appel faire de l' AJAX.

Regarde donc sur le net : Upload fichier AJAX tu trouveras plein d'exemples
0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
10 déc. 2016 à 12:56
Eh ben voila ce qu'il me faut :)

Merci
0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
12 déc. 2016 à 15:26
Bonjour,

Je suis assez content j'ai trouvé par ci par la des morceaux de script qui marchent bien, j'ai galérer un peu a les modifier mais je me suis aider d'un sujet sur developpez.net.J''ai pu testé sur mon petit serveur web en locale via un autre ordinateur pour uploader des fichiers.Seul soucis le script php que j'ai coté serveur n'accepte que les images, je veux qu'il accepte un fichier au format html.Voici le script php:

<?php
if(isset($_POST) == true){
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size =$_FILES['image']['size'];
$file_tmp =$_FILES['image']['tmp_name'];
$file_type=$_FILES['image']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
$extensions = array("jpeg","jpg","png");
if(in_array($file_ext,$extensions )=== false){
$errors[]="Extension non autorisée choisissez une image.";
}
if($file_size > 1048576){
$errors[]='Erreur fichier trop gros';
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"images/".$file_name);
}else{
$myfile = fopen("log.txt", "w") or die("Impossible d'ouvrir le fichier!");
$txt = implode("\n", $errors);
fwrite($myfile, $txt);
fclose($myfile);
}
}
?>


Je suppose que je dois changer ces lignes ?

	$errors= array();
$file_name = $_FILES['image']['name'];
$file_size =$_FILES['image']['size'];
$file_tmp =$_FILES['image']['tmp_name'];
$file_type=$_FILES['image']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
$extensions = array("jpeg","jpg","png");


Merci a vous.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
12 déc. 2016 à 16:13
 $extensions = array("jpeg","jpg","png"); 	
0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
13 déc. 2016 à 17:22
Merci Jordan, j'ai essayé avec juste la chose suivante:
$extensions = array("html");


Mais ça n'a pas marché, j'ai l'erreur suivante "Images only. Select another file</p>");

le problème vient pas du script php coté serveur apparemment mais du js coté local:

$(function(){

$("#drop-box").click(function(){
$("#upl").click();
});

// To prevent Browsers from opening the file when its dragged and dropped on to the page
$(document).on('drop dragover', function (e) {
e.preventDefault();
});

// Add events
$('input[type=file]').on('change', fileUpload);

// File uploader function

function fileUpload(event){
$("#drop-box").html("<p>"+event.target.value+" uploading...</p>");
files = event.target.files;
var data = new FormData();
var error = 0;
for (var i = 0; i < files.length; i++) {
var file = files[i];
console.log(file.size);
if(!file.type.match('image.*')) {
$("#drop-box").html("<p> Images only. Select another file</p>");
error = 1;
}else if(file.size > 1048576){
$("#drop-box").html("<p> Too large Payload. Select another file</p>");
error = 1;
}else{
data.append('image', file, file.name);
}
}
if(!error){
var xhr = new XMLHttpRequest();
xhr.open('POST', 'upload.php', true);
xhr.send(data);
xhr.onload = function () {
if (xhr.status === 200) {
$("#drop-box").html("<p> File Uploaded. Select more files</p>");
} else {
$("#drop-box").html("<p> Error in upload, try again.</p>");
}
};
}
}

});


J'ai ténté de changer cette ligne:
if(!file.type.match('image.*')) {

Par ceci:
if(!file.type.match('html.*')) {
ou encore *.html mais ça ne marche pas, si je comprends bien c'est le filtre coté js qui laisse pas passer le fichier c'est bien sa ?

Merci
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649 > Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
13 déc. 2016 à 17:55
Fais donc un console.log de file.type lorsque tu mets un fichier html et regarde ce que ça donne.
0
Integreur Messages postés 86 Date d'inscription jeudi 1 décembre 2016 Statut Membre Dernière intervention 4 octobre 2022
14 déc. 2016 à 14:41
J'ai fais ce que tu m'a dis et le résultat du test est vraiment bizarre:

1- en tentant d'uploader un fichier html alors que j'ai mis html dans match type et html dans le php, la console ne me retourne pas d'erreur en rouge mais "script.js:24", je suis aller voir dans cette ligne et c'est celle-ci:

console.log(file.size);


J'ai essayer de résuire le file size ligne 28 du script, sans succès.

Autre chose, quand je rentre manuellement "html.* ligne 25 du script dans la console avant d'uploader le fichier, la il s'upload bien comme il faut.

J'ai refais plusieurs fois le test pour comprendre et je suis tombé sur ce qui je pense et l'origine du problème.Quand je touche rien dans la console et que j'essai d'uploader mon fichier html ça ne marche pas et pour cause la console me garde le paramètre image en mémoire alors que dans le script le paramètre est bien en html.* Voici ce que j'obtiens dans la console sans rien toucher ligne 24 et 25 du script:

console.log(file.size);
if(!file.type.match('image.*')) {


Hors dans le script j'ai bien mis html.*
il semble que la console interprète le image.* a chaque fois c'est très étrange, je t'ai fais une petite vidéo pour que tu vois toi meme de quoi je parle.

Dans le premier exemple je touche rien, dans le second je rajoute moi meme le html.* dans la console.

http://www.dailymotion.com/video/x558jfn
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
14 déc. 2016 à 17:13
Tu peux m'expliquer pourquoi tu as mis
console.log(file.size);

Alors que je t'ai demandé de mettre
console.log(file.type);

????
0