Sample code for 30+ languages & platforms
PHP ActiveX

File Read Blocks

Demonstrates how to read a file in fixed-size blocks (except for the very last block).

Chilkat PHP ActiveX Downloads

PHP ActiveX
<?php

$success = 0;

// Demonstrates how to read a file in blocks,
// which can be useful when uploading to cloud storage
// services such as Azure, S3, Google, etc.

// For this example, we're simply writing the blocks
// to an output file, and then checking to see if the
// resulting file contents equals the original file contents.

$facSrc = new COM("Chilkat.FileAccess");
$facDest = new COM("Chilkat.FileAccess");

$srcPath = 'qa_data/xml/hamlet.xml';
$destPath = 'qa_output/hamletOut.xml';

$success = $facSrc->OpenForRead($srcPath);
$success = $facDest->OpenForWrite($destPath);
// Assuming success for the example..

// How many 1024-byte blocks?  (Including 1 for the last partial block)
$numBlocks = $facSrc->GetNumBlocks(1024);

$i = 0;
while (($i < $numBlocks)) {
    $dataBlock = $facSrc->ReadBlock($i,1024);
    if ($facSrc->LastMethodSuccess != 1) {
        print $facSrc->LastErrorText . "\n";
        exit;
    }

    $success = $facDest->FileWrite($dataBlock);
    if ($success != 1) {
        print $facDest->LastErrorText . "\n";
        exit;
    }

    $i = $i + 1;
}

$facSrc->FileClose();
$facDest->FileClose();

$bEqual = $facSrc->FileContentsEqual($srcPath,$destPath);
if ($bEqual != 1) {
    print 'Something went wrong!' . "\n";
    exit;
}

print 'File successfully copied by blocks.' . "\n";

?>