Salut,
bon...problème pas uniquement js, mais il y en a...donc, sait-on jamais ;-)
Voilà, je bosse sur e framework XMLRAD, pour ceux qui connaissent. J'ai d'ailleurs posé ma question aussi sur le forum concerné, mais si quelqu'un d'ici a une idée...
XMLRAD permet de travailler sur des fichiers XML, mis en forme avec des fichiers XSL. Le travail côté serveur se fait avec une bdd SQL Server et du delphi. Mais ça, on s'en fout à priori.
Le but est simple : je permets sur ma page de faire un upload de fichier, et je voudrais aussi enregistrer le nom de ce fichier dans ma base.
Etant donné que l'attribut enctype de ma balise form pose un problème quant au nom du fichier (l'upload marche, pas l'insertion dans la base : le nom est vide), je suis passé par un formulaire caché pour le nom du fichier. Voilà en résumé le script :
<script type="text/javascript"><![CDATA[function Upload() {
var File = GetFieldValue('UploadForm', 'FileToAttach');
SetField ('ProcessUpload', 'FileToImport', File);
if (File != '')
{
document.body.style.cursor = 'wait';
SubmitForm('UploadForm', 'ACTION', XMLC_BaseHRef + 'XMLC_UploadFile');
Process (File);
}
}]]><![CDATA[function Process (Fichier) {
if (Fichier != '') {
SetField ('ProcessUpload', 'FileToImport', Fichier);
SubmitForm('ProcessUpload', 'ACTION', XMLC_BaseHRef + 'ImportFileName');
}
}]]></script>
<form action="{/document/Aliases/SAEDLL}XMLC_UploadFile" method="POST" name="UploadForm" enctype="multipart/form-data">
<!--<input type="hidden" name="NextAction" value="ImportHastus"/>-->
<input type="hidden" name="XMLC_RequestID" value="{/document/Params/XMLC_RequestID}"/>
<table border="0" width="100%">
<tr>
<td width="30%">
<xsl:value-of select="/document/Locales/CalendarFieldName"/>
</td>
<td width="70%">
<input type="file" name="FileToAttach" style="width:100%"/>
</td>
</tr>
</table>
<center>
<table>
<tr>
<td>
<xsl:call-template name="xslc:Button">
<xsl:with-param name="Caption">
<xsl:value-of select="/document/Locales/ButtonValidCalendar"/>
</xsl:with-param>
<xsl:with-param name="OnClick">Upload();</xsl:with-param>
</xsl:call-template>
</td>
</tr>
</table>
</center>
</form>
<form action="{/document/Aliases/SAEDLL}ImportFileName" method="POST" name="ProcessUpload">
<input type="hidden" name="NextAction" value="ImportHastus"/>
<input type="hidden" name="FileToImport"/>
</form>
Pour les fonctions js inconnues :
- SetField : permet d'attribuer une valeur au champ d'un formulaire.
- GetFieldValue : récupère la valeur d'un champ d'un formulaire.
Facile ;-)
Maintenant, ce qui se passe ici :
Si je lasse tel quel : l'upload n'est pas réalisé, mais j'ai bien le nom du fichier dans ma base.
Si je comment la ligne
Process (File); dans la fonction
Upload () j'ai alors mon fichier uploadé, et bien mis dans le bon répertoire, mais dans ma base, je n'ai rien...évidemment.
Une idée quelqu'un...?
Merci par avance :-)
Johan