• 23-08-2012, 10:39:04
    #1
    şurda bahsettiğim sorunu çözemedim.

    şimdi yüklü miktardaki veriyi excele aktarırken oluşan memory sorunu yüzünden çözüm olarak bu verileri csv'ye atarmaya karar verdik.
    verilerin csv ye aktarılmasında bir sorun yok fakat bu seferde başka bir sorun çıktı

    şimdi şöyle verileri abc.csv isimli bir dosyaya aktardığımızı düşünün ben bu dosyayı üyeye xyz.csv ismi ile gösterip indirttiriyorum.
    ilgili kodların hikayesi aşağıdaki gibi

    	
    header('Content-Type: '.$filetipi);
    header('Content-disposition: attachment; filename=xyz.csv');
    header('Content-Transfer-Encoding: binary');
    readfile('abc.csv');
    csv ye aktarılan satırları şöyle düşünün
    1.satır
    2.satır
    3.satır......

    üye dosyayı indirdip açtığında xyz.csv deki satırlar ise şöyle oluyor
    1.satır
    2.satır
    3.satır......
    1.satır
    2.satır
    3.satır......

    dosyayı readfile içine her soktuğumda csv verileri yukardaki gibi oluyor.

    deneme için
    1.satır a
    2.satır b

    şeklinde bir xyz.csv dosyası hazırladım, yukardaki abc.csv yi oluşturduktan sonra indirilen csv dosyasının içeriği şöyle oldu
    1.satır a
    2.satır b
    1.satır
    2.satır
    3.satır......

    bu durum neden oluşuyor nasıl engelleyebilirim.

    bu arada abc dosyası da xyz dosyası da normalde sitede mevcut değil o esnada oluşturuluyor ve dosya indirildikten sonra da siliniyor.
  • 23-08-2012, 12:16:57
    #2
    1.satır
    2.satır
    3.satır......

    Şeklindeki kısım her CSV dosyasının sonuna siz istemeden mi ekleniyor, diyorsunuz?
    Kodları görsek daha rahat yardımcı olabiliriz.
  • 23-08-2012, 13:48:44
    #3
    hocam problem çıkaran kod dizisi yukardaki gibi.
    csv oluşturulmasında falan sorun yok. hani en başta csv zaten öyle problemli oluşturuluyor olabilir onu kontrol edelim diye aklınıza geliyordur muhtemelen ama öyle değil csv normal oluşuyor.


    a dosyasını b ismi ile indirtmek için yukardaki kodları kullandığımda readfile csv dosyasındaki verilerin bir kopyası daha oluşturuluyor.
  • 24-08-2012, 14:27:42
    #4
    xyz.csv diye niye bir dosya yapıyorsunuz?
    PHP de bildiğim kadarıyla:

    header('Content-Type: '.$filetipi); 
    header('Content-disposition: attachment; filename=dosya_ismi.csv'); 
    header('Content-Transfer-Encoding: binary'); 
    echo 'herhangi bir yazi';
    yaptık mı;

    dosya_ismi.csv içinde herhangi bir yazı olur, bizim dosya_ismi.csv oluşturmamıza ve servera koymamıza gerek olmaması gerek.

    Bir de söyle deneyin;
    header('Content-Type: application/octetstream');
    header('Content-Disposition: inline; filename=xyz.csv');
    header("Content-Transfer-Encoding: binary");
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    readfile('abc.csv');