Ben umutsuzca bu olayı çözmek için çalışıyorum. Ben webroot dışında depolanan dosyaların bir grup var ve ben bir kaç auth kontrollerden sonra bir kullanıcıya onlara hizmet etmek gerekir. Bu dosyalar bir Flex uygulaması kullanılarak yüklenmiş olan ya da sadece elle FTP üzerinden yüklendi. Ben şöyle bir görev komut dosyası var:
<?php
$filePath = '/for/demonstration/only.jpg';
...
$type = exif_imagetype($filePath);
$size = filesize($filePath);
if ($type && $size > 0) {
switch($type)
{
case IMAGETYPE_PNG:
header("Content-Type: image/png");
break;
case IMAGETYPE_JPEG:
header("Content-Type: image/jpeg");
break;
default:
header("Content-Type: text/plain");
break;
}
header("Content-Length: {$size}");
readfile($filePath);
exit;
} else {
echo 'error';
}
Oldukça basit. The image however, somewhere in the upload process, Çünkü kodlama işlemi, dosya ekstra 100-130B kazandı, ve şimdi bozuk gibi görünüyor vardır. Ben extraneous bytes hatası alıyorum. Yükleme komut de oldukça basittir, Flex dosyayı seçmek için kullanıcı için FileRefrence kullandığı, daha sonra verileri kodlar ve sunucu komut gönderir:
<?php
function fileupload($data)
{
$daily_folder = 'today/';
$fileName_clipped = substr( $fileName, 0, $max_file_len );
$fileName_clipped = preg_replace('/\./','_',$fileName_clipped);
$filePath = '/path/to/storage' . $daily_folder;
if(!is_dir($filePath))
mkdir($filePath);
if( strlen($data->filedata) > 0 ) {
if( !file_put_contents($filePath . $fileName_clipped, base64_decode($data->filedata)) )
return false;
} else {
return false;
}
}
Süreci Koşu
31848 B üzerinden 108B ekstra yılında 31.740 B: Bir dosya
dosyası B: 31403 B üzerinden 130B ekstra olarak 35.273 B
Ben bu Flaş tarafta olabilir hayal, ama dürüst kir basit. Fazladan veri geliyor nerede ben görmüyorum, ve neden onun dosyayı bozarak. Bu neden oluyor bilen var mı? ya da daha iyisi, nasıl ben şimdi bu dosyaları temizlemek?