Bonjour,
je viens vers vous car je ne trouve pas mon bonheur pour réaliser l'opération, pourtant simple qu'est le téléchargement d'un fichier depuis le serveur web.
voici le fonctionnement de ma page html:
1) sélection des paramètres de recherches
2) sélection si téléchargement pour correction ou non
3) lors du submit, je fais un envoie ajax, qui fonctionne parfaitement pour l'affichage comme pour la création de mon fichier sur le serveur.
si je choisi l'option "pour correction", mon serveur doit forcé le téléchargement dudit fichier. mais la cela ne fonctionne pas.
Dans le code coté serveur ( php), je vais vous épargner toute la partie requête qui n'as pas d’interet pour le traitement vue que cela fonctionne parfaitement.
fichier php inclus dans le précédent pour forcer le téléchargement, comme vous pouvez le voir il n'est pas de moi mais il fonctionne parfaitement sur d'autre page PHP qui l'utilise.
ou est mon erreur de compréhension pour forcer se GRRRRRR de fichier.
merci à ceux qui lirons ce long message et double merci pour ceux qui pourrons m'apporter des pistes de réflexion pour avancer.
je viens vers vous car je ne trouve pas mon bonheur pour réaliser l'opération, pourtant simple qu'est le téléchargement d'un fichier depuis le serveur web.
voici le fonctionnement de ma page html:
1) sélection des paramètres de recherches
2) sélection si téléchargement pour correction ou non
3) lors du submit, je fais un envoie ajax, qui fonctionne parfaitement pour l'affichage comme pour la création de mon fichier sur le serveur.
si je choisi l'option "pour correction", mon serveur doit forcé le téléchargement dudit fichier. mais la cela ne fonctionne pas.
Dans le code coté serveur ( php), je vais vous épargner toute la partie requête qui n'as pas d’interet pour le traitement vue que cela fonctionne parfaitement.
// début du traitement dans mon fichier PHP
if ($_SERVER["REQUEST_METHOD"]=="POST") {
// traitement des erreurs + récupération des données variable + traitement de la requete
// code pour la création du fichier lancé après la requête.
if ($array1['download']=='correction'){
preparefichier($query);
$array1["isSucces"] =true;
}
// traitement des données pour constituer mon array de retour vers ajax.
// fin de mon if sur le REQUST_METHOD
}
// la je tente de forcer le téléchargement
if($array1['download']=='pour correction' && $array1['isSuccess']==true) {
// procédure pour télécharger automatiquement pas finaliser
forcerTelechargement('SORTIE_RECUP', 'SORTIE_RECUP');
}
// je passe maintenant aux fonctions.
//fonction pour créer le fichier
function preparefichier($query){
$row="";
//prépation du fichier
$filename = "SORTIE_RECUP";
if (!$handle = fopen($filename, 'w')) {
echo "Impossible d'ouvrir le fichier ($filename)";
exit;
}
$conn = oci_connect('user', 'password', 'ip_serveur/instance','UTF8');
$std=oci_parse($conn,$query);
$result=oci_execute($std);
while($row = oci_fetch_array($std)){
$prnom = $row[1];
$reference = $row[2];
$service = $row[3];
$quantite = $row[4];
$datemvt = $row[5];
$numMVT =$row[10];
// permet de faire le complement de 0 pour le fichier
$qt = str_pad($quantite,4,0,STR_PAD_LEFT);
// test si la qantité est négative à faire confirmé sur un mouvement negatif manquant...
if ($quantite >0){
$signe="-";
}else{
$signe="+";
}
if ($service=="6210M"){
$service="6210";
}
if ($service=="0066A"){
$service="0066";
}
if ($service=="0066B"){
$service="0066";
}
$qt=control_qt($qt);
$fields = "test;SD;unité;test;".$datemvt.";".$numMVT.";".$service.";;".substr($reference,0,6).";".substr($reference,-1,1).";;".$qt.".000;;\n";
fputs($handle,$fields);
}
//fermeture du fichier aprés écriture.
fflush($handle);
fclose($handle);
// procédure pour télécharger automatiquement pas finaliser
// forcerTelechargement('SORTIE_RECUP', 'SORTIE_RECUP');
}
fichier php inclus dans le précédent pour forcer le téléchargement, comme vous pouvez le voir il n'est pas de moi mais il fonctionne parfaitement sur d'autre page PHP qui l'utilise.
<?php
/*******************************************************
* Déclaration de la fonction
*******************************************************/
/**
* La fonction force le téléchargement d'un fichier
*
* @author : Hugo HAMON
* @param : string $nom nom du fichier
* @param : string $situtation emplacement sur le serveur web
* @return : void
**/
function forcerTelechargement($nom, $situation)
{
// echo '<a href="'.$situation.'" target="_blank"></a>';
//$poids=filesize($nom);
header('Content-Description: File Transfer');
header('Content-Type: application/force-download');
header('Content-Type: application/x-rar-csv');
//header('Content-Length: '.filesize($nom));
header('Content-Transfer-Encoding: binary');
header('Content-disposition: attachment; filename='. $nom);
header('Pragma: no-cache, public');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
ob_clean();
flush();
readfile($situation);
exit();
}
?>
ou est mon erreur de compréhension pour forcer se GRRRRRR de fichier.
merci à ceux qui lirons ce long message et double merci pour ceux qui pourrons m'apporter des pistes de réflexion pour avancer.