Filesize über4gb auslesen?

Ich habe einmal mit 5 GB, 6 GB und einmal mit 10 GB getestet.

Zum Erstellen der Dateien habe ich das Kommandozeilenprogramm fsutil benutzt:
Code:
fsutil file createnew [filename] [filesize in bytes]
fsutil file createnew C:\xampp\htdocs\mytest\data.dat 10737418240
Letzter Befehl würde eine Datei C:\xampp\htdocs\mytest\data.dat mit genau 10 GB anlegen.
 
hmm schon sehr komisch das es bei mir nicht klappt :(bei m8ir geht er einfach nicht über 4,1gb drüber ...
hast du vllt gewisse einstellungen in der php.ini vorgenommen oder so ?
werde gerade nicht draus schlau :(
 
Nein, zumindest nicht welche, die von Belang wären.

Aber ich habe in diesem Kommentar folgende Lösung gefunden:
PHP:
<?php
$filesystem = new COM('Scripting.FileSystemObject'); 
$file = $filesystem->GetFile('C:\xampp\htdocs\mytest\data_10gb.dat');
$size = $file->Size();

var_dump($size);
?>
Das geht natürlich nur auf Windows-Systemen.
 
Ist zwar totaler Pfusch, funktioniert aber auf meinem Windows 7 64Bit:

PHP:
function mygetSize($file)
{
	$fileName = basename($file);
	$cmd = exec("dir /-c " . escapeshellarg($file), $out, $err);
	$pattern = "/(.*?)$fileName\$/";
	$size = 0;
	foreach($out as $line)
	{
		if(preg_match($pattern, $line, $matches))
		{
			$match = trim($matches[1]);
			$parts = explode(' ',$match);
			$size = $parts[count($parts)-1];
		}
	} 
	
	return $size;
}

Möglicherweise sollte man noch Fehlerbehandlung einbauen.
 
habe das gerade mal getestet mit der funktion .. leider wieder mal ohne erfolg ... nun zeigt er an das alle dateien 0.0 mb haben sollen ^^
 
Versuch es mal damit, notfalls mal die Kommentar-Slashes bei var_dump() entfernen und das Ergebnis posten.

PHP:
function mygetSize($file)
{
	$exists = file_exists($file);
	if(!$exists)
	{
		die("File $file not found");
	}
	$fileName = basename($file);
	$cmd = exec("dir /-c " . escapeshellarg($file), $out, $err);
	if($err != 0)
	{
		die("Getting file info using dir command failed with error code $err");
	}
	
	// Debugging
	//var_dump($out);
	
	$pattern = "/(.*?)$fileName\$/";
	$size = 0;
	foreach($out as $line)
	{
		if(preg_match($pattern, $line, $matches))
		{
			$match = trim($matches[1]);
			$parts = explode(' ',$match);
			// Debugging
			//var_dump($parts);
			$size = $parts[count($parts)-1];
		}
	} 
	
	return $size;
}
 
so hallo auch,
hab es getestet "Getting file info using dir command failed with error code 1" springt an und liegt vllt daran das der parth nicht korrekt ist,
ich sollte vllt dazu sagen das die dateien nicht im script verzeichnis liegen sondern seperat auf ner anderen hdd.
 
Zurück