justanumber44
Goto Top

Bei Seitenaufruf Dateiauswahl öffnen - JavaScript

Schönen guten Abend face-smile
Ich bräuchte kurz Hilfe bei einem Script das Automatisch beim aufrufen den Auswahl-Dialog für Dateien öffnen soll, das ganze dann hochladen soll und noch mit Statusanzeige (nur im Titel der Seite, wie der rest aussieht ist egal).

Keine sorge ich hab soweit alles bis das Datei auswählen beim Aufruf.
(Bitte nicht erschlagen face-big-smile , ich weiß selbst das das Script der Horror sein muss, ich kenn mich noch nicht wirklich mit JavaScript und jQuery aus)

index.html
<!DOCTYPE html>
<html>
<head>
  <script type='text/javascript' src='//code.jquery.com/jquery-2.0.2.js'></script>  
  

<script>
function _(el){
	return document.getElementById(el);
}
function uploadFile(){
	var file = _("yourinputname").files;  
	//alert(file.name+" | "+file.size+" | "+file.type);  
	var formdata = new FormData();
	formdata.append("yourinputname", file);  
	var ajax = new XMLHttpRequest();
	ajax.upload.addEventListener("progress", progressHandler, false);  
	ajax.addEventListener("load", completeHandler, false);  
	ajax.addEventListener("error", errorHandler, false);  
	ajax.addEventListener("abort", abortHandler, false);  
	ajax.open("POST", "file_upload_parser.php");  
	ajax.send(formdata);
}
function progressHandler(event){
	_("loaded_n_total").innerHTML = "Uploaded "+event.loaded+" bytes of "+event.total;  
	var percent = (event.loaded / event.total) * 100;
	document.title = percent;
	_("progressBar").value = Math.round(percent);  
	_("status").innerHTML = Math.round(percent)+"% uploaded... please wait";  
}
function completeHandler(event){
	_("status").innerHTML = event.target.responseText;  
	_("progressBar").value = 0;  
}
function errorHandler(event){
	_("status").innerHTML = "Upload Failed";  
}
function abortHandler(event){
	_("status").innerHTML = "Upload Aborted";  
}

</script>
</head>

<body>


<script type='text/javascript'>  
$(function(){
    $('#id').on('click', function() {  
        $('#yourinputname').trigger('click');  
    });
});//]]>  

</script>


</head>
<body>
  <button id="id">Open</button>  
  <form id="upload_form" enctype="multipart/form-data" method="post">  
<input id="yourinputname" type="file" name="yourinputname" onchange="uploadFile()" />  
    <progress id="progressBar" value="0" max="100" style="width:300px;"></progress>  
  <h3 id="status"></h3>  
  <p id="loaded_n_total"></p>  
</form>
</body>
</html>

file_upload_parser.php
<?php
$fileName = $_FILES["yourinputname"]["name"]; // The file name  
$fileTmpLoc = $_FILES["yourinputname"]["tmp_name"]; // File in the PHP tmp folder  
$fileType = $_FILES["yourinputname"]["type"]; // The type of file it is  
$fileSize = $_FILES["yourinputname"]["size"]; // File size in bytes  
$fileErrorMsg = $_FILES["yourinputname"]["error"]; // 0 for false... and 1 for true  
if (!$fileTmpLoc) { // if file not chosen
    echo "ERROR: Please browse for a file before clicking the upload button.";  
    exit();
}
if(move_uploaded_file($fileTmpLoc, "test_uploads/$fileName")){  
    echo "$fileName upload is complete";  
} else {
    echo "move_uploaded_file function failed";  
}
?>

Ich hoffe ihr könnt mir helfen face-big-smile
mfg Jonas

Content-Key: 238810

Url: https://administrator.de/contentid/238810

Printed on: April 19, 2024 at 21:04 o'clock

Member: colinardo
colinardo May 22, 2014 updated at 08:17:25 (UTC)
Goto Top
Hallo Jonas,
für einen Aufruf des Dateiauswahldialogs beim Aufruf der Seite müsste das reichen:
$(document).ready(function(e) {
    $('#yourinputname').trigger('click');  
});
Grüße Uwe
Member: justanumber44
justanumber44 May 22, 2014 updated at 14:47:46 (UTC)
Goto Top
Leider nicht -.-
<!DOCTYPE html>
<html>
<head>
  <script type='text/javascript' src='//code.jquery.com/jquery-2.0.2.js'></script>  
  

<script>
$(document).ready(function(e) {
    $('#yourinputname').trigger('click');  
});
function _(el){
	return document.getElementById(el);
}
function uploadFile(){
	var file = _("yourinputname").files;  
	//alert(file.name+" | "+file.size+" | "+file.type); 
	var formdata = new FormData();
	formdata.append("yourinputname", file);  
	var ajax = new XMLHttpRequest();
	ajax.upload.addEventListener("progress", progressHandler, false);  
	ajax.addEventListener("load", completeHandler, false);  
	ajax.addEventListener("error", errorHandler, false);  
	ajax.addEventListener("abort", abortHandler, false);  
	ajax.open("POST", "file_upload_parser.php");  
	ajax.send(formdata);
}
function progressHandler(event){
	_("loaded_n_total").innerHTML = "Uploaded "+event.loaded+" bytes of "+event.total;  
	var percent = (event.loaded / event.total) * 100;
	document.title = percent;
	_("progressBar").value = Math.round(percent);  
	_("status").innerHTML = Math.round(percent)+"% uploaded... please wait";  
}
function completeHandler(event){
	_("status").innerHTML = event.target.responseText;  
	_("progressBar").value = 0;  
}
function errorHandler(event){
	_("status").innerHTML = "Upload Failed";  
}
function abortHandler(event){
	_("status").innerHTML = "Upload Aborted";  
}

</script>
</head>

<body>


<script type='text/javascript'>  
 

</script>


</head>
<body>
  <button id="id">Open</button>  
  <form id="upload_form" enctype="multipart/form-data" method="post">  
<input id="yourinputname" type="file" name="yourinputname" onchange="uploadFile()" />  
    <progress id="progressBar" value="0" max="100" style="width:300px;"></progress>  
  <h3 id="status"></h3>  
  <p id="loaded_n_total"></p>  
</form>
</body>


</html>
Member: colinardo
colinardo May 22, 2014 updated at 15:35:15 (UTC)
Goto Top
also bei mir geht das öffnen des Dialogs ... vorhin mit Firefox getestet, oder willst du das eine Datei automatisch ausgewählt wird ?

Hast du einen Popupblocker aktiv ? Der wird dabei normalerweise getriggert.
Member: justanumber44
justanumber44 May 22, 2014 updated at 18:59:31 (UTC)
Goto Top
Zitat von @colinardo:

also bei mir geht das öffnen des Dialogs ... vorhin mit Firefox getestet, oder willst du das eine Datei automatisch
ausgewählt wird ?

Hast du einen Popupblocker aktiv ? Der wird dabei normalerweise getriggert.

Adblocker und Popup blocker im Chrome :D Ich habs aber mit Nightly (Firefox 64x) versucht, ging nicht.
Member: colinardo
colinardo May 22, 2014 updated at 19:47:45 (UTC)
Goto Top
öhm jetzt wo ih mir deinen Code mal näher ansehe ist doch einiges unstimmig, hier fehlt dir z.B. das http:
<script type='text/javascript' src='//code.jquery.com/jquery-2.0.2.js'></script>  
und in deinem HTML-Code ist auch einiges doppelt gemoppelt (doppelter Head und doppelter Body) !

Mal auf die wesentliche Funktion um die es hier geht reduziert, geht das einwandfrei ...
<!DOCTYPE html>
<html>
<head>
  <script type='text/javascript' src='http://code.jquery.com/jquery-2.0.2.js'></script>  
<script>
$(document).ready(function(e) {
    $('#yourinputname').trigger('click');  
});
</script>
</head>
<body>
<input id="yourinputname" type="file" name="yourinputname" />  
</body>
</html>
Member: justanumber44
justanumber44 May 22, 2014 at 20:09:36 (UTC)
Goto Top
Zitat von @colinardo:

öhm jetzt wo ih mir deinen Code mal näher ansehe ist doch einiges unstimmig, hier fehlt dir z.B. das http:
> <script type='text/javascript' src='//code.jquery.com/jquery-2.0.2.js'></script>  
> 
und in deinem HTML-Code ist auch einiges doppelt gemoppelt (doppelter Head und doppelter Body) !

Mal auf die wesentliche Funktion um die es hier geht reduziert, geht das einwandfrei ...
> <!DOCTYPE html>
> <html>
> <head>
>   <script type='text/javascript' src='http://code.jquery.com/jquery-2.0.2.js'></script>  
> <script>
> $(document).ready(function(e) {
>     $('#yourinputname').trigger('click');  
> });
> </script>
> </head>
> <body>
> <input id="yourinputname" type="file" name="yourinputname" />  
> </body>
> </html>
> 

Auf keinem der Computer, in keinem Browser (Nightly, Chrome, Safari)... (auch nicht am Handy)
document ready geht übrings so schon, ich habe es mit einer simplen Textausgabe versucht, aber er öffnet es einfach nicht face-sad
Aber herzlichen Dank für deine Hilfe...
Member: colinardo
colinardo May 22, 2014 updated at 20:26:21 (UTC)
Goto Top
dann stimmt bei dir was nicht oder du kopierst den code nicht über Quelltext, hier geht es überall, ich kann dir gerne morgen ein Video schicken, egal ob Firefox, IE unter Windows oder der IE auf einem RT-Tablet. Ich bin ja nicht besch...

Naja dann noch viel Erfolg
Grüße Uwe
Mitglied: 114757
114757 May 29, 2014 updated at 13:15:36 (UTC)
Goto Top
Servus,
also bei mir geht der Code von @colinardo auch problemlos.

Gruß jodel32