我试图通过session.upload_progress.name上传文件 - 它在某些文件上工作正常,但如果文件是“更大”f.ex. 13MB,脚本停止。问题不在于文件大小 - 更多的是我想的时间限制。如果我使用更快的互联网连接,它工作正常。我的webhoster是Strato - 有没有人有解决方案?
这是我的代码:
<?php session_start();
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Upload CSV Dateien</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="jquery.form.js"></script>
</head>
<body>
<article>
<header>
<h1>UPLOAD Import Dateien</h1>
</header>
<section>
<form action="upload.php" method="post" enctype="multipart/form-data" id="upload_form">
<!--
Dieses Feld ist wichtig. PHP benötigt dies für die Zuordnung.
Der Wert (Value) ist für uns später wichtig um auf die globale $_SESSION zuzugreifen
-->
<input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="test">
<div>
<label for="datei1">Bitte Datei zum hochladen auswählen: </label>
<p></p>
<input name="file1" type="file" id="datei1">
</div>
<div>
<input name="upload_start" type="submit" value="Hochladen">
<input name="abbrechen" type="button" value="Abbrechen" id="abbrechen">
</div>
</form>
</section>
<section>
<div>
<progress max="1" value="0" id="fortschritt"></progress>
<p id="fortschritt_txt"></p>
</div>
</section>
</article>
<script>
var intervalID = 0;
$(document).ready(function(e) {
$('#upload_form').submit(function(e) {
if($('#datei1').val() == ''){
e.preventDefault(); //Event abbrechen
return false;
}
intervalID = setInterval(function() {
$.getJSON('fortschritt.php', function(data){
if(data)
{
$('#fortschritt').val(data.bytes_processed / data.content_length);
$('#fortschritt_txt').html('Fortschritt '+ Math.round((data.bytes_processed / data.content_length)*100) + '%');
}
});
}, 1000); //Zeitintervall auf 1s setzen
$('#upload_form').ajaxSubmit({
success: function()
{
$('#fortschritt').val('1');
$('#fortschritt_txt').html('Fertig');
clearInterval(intervalID);
location.reload();
},
error: function()
{
$('#fortschritt').val('1');
$('#fortschritt_txt').html('Ein Fehler ist aufgetreten');
clearInterval(intervalID);
}
});
e.preventDefault(); //Event Abbrechen
});
$('#abbrechen').click(function(e) {
$.ajax("fortschritt.php?cancel=true");
$('#fortschritt').val('1');
$('#fortschritt_txt').html('Upload abgebrochen');
clearInterval(intervalID);
});
});
</script>
</body>
</html>
这就是upload.php
<?php
session_start();
/*
* Session-Upload-Progress ist leer
* durch die Option session.upload_progress.enabled = On
*/
var_dump($_SESSION);
/*
* Übliches Format von $_FILES
*/
var_dump($_FILES);
move_uploaded_file($_FILES['file1']['tmp_name'],'../import/'.$_FILES['file1']['name']);
/*
* Wenn abgebrochen
*/
if($_FILES['error'] == UPLOAD_ERR_EXTENSION)
echo "Datei abgebrochen";
?>
答案 0 :(得分:0)
请在开始上传文件之前将set_time_limit设置为0,并设置无限时间执行,脚本在完成上传之前不会停止。 (但最好为上传设置一些时间限制,以避免服务器问题。
${PN}-dev