Sign in to follow this  

[PHP 5.4.0] Upload tracking returning empty array

Recommended Posts

Jayzee    0

I'm using the latest PHP 5.4.0 and was considering switching from using nginx upload tracking extension to now PHP native upload tracking. The problem is - session returns empty array (yes, I tried uploading huge files and the server is _not_ running on my development machine)! The everything _should_ be set up by-the-book and I have analyzed all available tutorials to no avail. Can anyone help?

1. Is upload enabled in your php.ini? Yes.


session.upload_progress.enabled = On
session.upload_progress.cleanup = On
session.upload_progress.prefix = "upload_progress_"
session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
session.upload_progress.freq = "1%"
session.upload_progress.min_freq = "1"
[/CODE]

[size=5]2. Second, the file structure....[/size]

post-68837-0-46299900-1331450128.png

[size=5]3. The content...[/size]

[b]index.php:[/b]

[CODE]
<?php
session_start();
$key = ini_get("session.upload_progress.name");
?>
<!doctype html>
<html>
<head>
<title>Upload test</title>
</head>
<body>
<h3>Select multiple files</h3>
<form name="uploadForm" id="uploadForm" target="uploadIframe" action="upload.php" enctype="multipart/form-data" method="post">
<input type="hidden" name="<?=$key; ?>" id="key" value="123" />
<input id="uploadButton" type="file" name="uploads[]" accept="image/bmp, image/gif, image/jpeg, mage/pipeg, image/pjpeg, image/png, image/x-png, image/tiff" multiple />
</form>
<iframe name="uploadIframe" id="uploadIframe" width="0" height="0" frameborder="0" border="0" src="about:blank"></iframe>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
var timer;
function progress_fetch() {
$.getJSON("progress.php", function(data) {
if (data == "done")
clearInterval(timer);
else
console.log(data);
});
}
$(document).ready(function() {
$("#uploadForm").change(function() {
$(this).submit();
// start polling the progress code
timer = setInterval("progress_fetch()", 1000);
});
});
</script>
</body>
</html>
[/CODE]

[b]progress.php:[/b]

[CODE]
<?php
session_start();
$key = ini_get("session.upload_progress.prefix") . "123";
if (!empty($_SESSION[$key]))
$answer = print_r($_SESSION[$key], 1);
else
$answer = "done";
echo json_encode($answer);
?>
[/CODE]

[b]upload.php:[/b]

[CODE]
<?php
header("Content-Type: text/plain");
$uploadFolder = "upload/";
$loopCounter = 0;
$response = array();
foreach ($_FILES['uploads']['tmp_name'] as $uploadSource)
{
$uploadDestination = 'upload/' . basename($_FILES['uploads']['name'][$loopCounter]);
if (is_uploaded_file($uploadSource))
{
move_uploaded_file($uploadSource, $uploadDestination);
$fileArray = array(
"name" => $_FILES['uploads']['name'][$loopCounter],
"size" => $_FILES['uploads']['size'][$loopCounter],
"path" => $uploadDestination
);
array_push($response, $fileArray);
}
$loopCounter++;
}
echo json_encode($response);
?>
[/CODE]

Running my test code (see above) I only see

[CODE]
array(0) {
}
[/CODE]

in javascript console instead of array containing uploaded file data. FYI, upload.php is first called when all data has been uploaded.

Share this post


Link to post
Share on other sites
wil    1

edit

found the cause of the problem

$key = ini_get("session.upload_progress.name");

returns false for me

which points me to http://php.net/manual/en/function.ini-get.php

suggesting session.upload_progress.name configuration doesn't exist

Share this post


Link to post
Share on other sites
Serkan Bulutgen    0

Hi.. I had same problem but I've just solved. Actually sessions are not empty but due to session.upload_progress.clean=on in your ini file, they're cleaning.?f you change this setting off you'll see the session values..

Share this post


Link to post
Share on other sites
geraldine    0

In some cases I have the same problem despite session.upload_progress.cleanup=off. For small files (MB) it works rather nicely. But as soon as trying to upload files with size around 6-7 GB or larger the session key gets empty. Does anybody know a solution for this?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.