upload activex Scripting.FileSystemObject
Y a-t-il un moyen simple d'uploader un fichier activex? (plus simple que celui-ci: http://www.codeproject.com/KB/aspnet/AJAXUpload.aspx )
J'obtiens le fichier de cette façon
Code:
1 2
| var fileobject = new window.ActiveXObject("Scripting.FileSystemObject");
myfile = fileobject.GetFile(filepath); |
Cette façon ne semble pas fonctionner. On ne peut spécifier le fichier automatiquement pour l'élément 'input type=file'.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| function uploadtopineditform (myyfile, uploadurl)
{// Ouvrir la page d'upload dans un iframe invisible
var tempiframe=document.createElement('iframe');
tempiframe.setAttribute('id','RSiframe');
tempiframe.style.border='0px';
tempiframe.style.width='0px';
tempiframe.style.height='0px';
iframeObj = document.body.appendChild(tempiframe);
// Créer un formulaire d'upload dans cet iframe
var frmUpload = document.createElement('form');
tempiframe.appendChild(frmUpload);
// Créer l'input file
var inputfile=document.createElement('input');
inputfile.setAttribute("type", "file");
inputfile.setAttribute("name", "file");
inputfile.setAttribute("defaultvalue", myfile); // Ne fonctionne pas (ni value). Pas moyen de spécifier le fichier?
frmUpload.appendChild(inputfile);
frmUpload.action = uploadurl ; //+ "&insert=" + insert;
frmUpload.submit();
}; |
J'ai une erreur avec ceci mais je ne sais pas pourquoi
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
function uploadtopineditajax (myfile, uploadurl)
{ var request = createRequest();
if (request) {
request.open('POST', uploadurl, false);
request.send(myfile); // L'erreur est ici. Faut-il convertir l'object file activex?
if (request.readyState == 4) {
if (request.status == 200) {}
else { if (request.status == 401) {
alert ("Error 401");}
else
alert("Error");
}}
else
alert('AJAX request failed.');
}
else
alert('Unable to create AJAX request.');
};
function createRequest() {
var request;
try {
request = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
request = new ActiveXObject('Msxml2.XMLHTTP');
} catch (tryothermicrosoft) {
try {
request = new ActiveXObject('Microsoft.XMLHTTP');
} catch (failed) {
request = false;
}}}
return request;
}; |
Pour l'upload en php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <?php
$uploaddir = 'c:/';
$uploadfile = $uploaddir . basename($_FILES['file']['name']);
echo "<p>";
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Upload failed";
}
echo "</p>";
echo '<pre>';
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?> |
Merci
Si l'utilisateur donne son accord bien sur
Le but n'étant pas de fouiller l'ordi de l'utilisateur...
Si une solution demande simplement à l'utilisateur de valider l'upload c'est ok.
Le but étant ici de faciliter la vie de l'utiliseur:
Quand on fait un copier coller de Word vers des éditeurs html wysiwyg, les images restent sur l'ordi local. Pour l'utilisateur c'est très contraignant de transférer ces images. Il faut uploader les images une à une, puis recréer chacun des liens vers les images uploadées.
Dans ce que j'ai, il manque juste à permettre l'upload:
- le remplacement des liens vers les images locales vers les images serveurs est fait
- l'upload 'connaît' le fichier à uploader, sa destination, son nouveau nom (si nécessaire).