Nazwa pliku jako data i godzina w php


(irek26@wp.pl) #1

Witam mam podobny problem próbuje sprawić żeby pliki wysyłane przez kamerę internetową miały w nazwie datę i godzinę zamiast numeru seryjnego kamery.Ponieważ jeden obraz nadpisuje się na drugim. Pomoże ktoś ??? :frowning:

function hex2bin($s,$l) {

for ($i = 0; $i < $l*2; $i += 2)

{

if($i < strlen($s))

$bin .= chr(hexdec(substr($s,$i,2)));

else

$bin .= chr(0);

}

return $bin;

}

function checkParity($s) {

for ($i = 0; $i < strlen($s); $i++)

{

$c=hexdec(bin2hex(substr($s,$i,1)));

$p=0;

for($j=0; $j<8; $j++)

{

if(($c & (1<<$j)) != 0)

$p++;

}

if(($p & 0x01) == 0)

$c += 0x80;

$bin .= chr($c);

}

return $bin;

}

if (isset($_POST['submit']))

{ // Obsługa formularza.

if (isset($_POST['gps']))

$gps=addslashes($_POST['gps']);

else

$gps="";

$http_answer=chr(1).chr(2).chr(4).chr(0); // marker końca danych

$err="";

$pfile_name=$_FILES['pfile']['name'];

$pfile_size=$_FILES['pfile']['size'];

$pfile_tmp_name=$_FILES['pfile']['tmp\_name'];

if($pfile_name!="none")

{

if($pfile_size==0)

$err= chr(1).chr(0).chr(5).chr(0).chr(1);// 'Problem: wysłany plik ma długość zero bajtów

';

if(!is_uploaded_file($pfile_tmp_name))

$err= chr(1).chr(0).chr(5).chr(0).chr(2);// 'Problem: możliwy atak podczas wysyłania pliku';

}

else

$err= chr(1).chr(0).chr(5).chr(0).chr(3); // 'Problem: brak pliku z danymi'

if((strlen($err)==0) && $pfile_name!="none" )

{

$wp=fopen($pfile_tmp_name, "r");

$pic_data=fread($wp, $pfile_size); // wpisanie do $pic_data przeslanego pliku z danymi obrazka

fclose ($wp);

$pic_key="123456789"; //Klucz do odszyfrowywania obrazu

if($pic_key)

{

if(strlen($pic_key)>8)

$DesKey=substr($pic_key,1,8);

else if(strlen($pic_key)==8)

$DesKey=$pic_key;

else

$DesKey="012345678";

$DesKey=checkParity($DesKey);

}

if($COMpos = strpos($pic_data, chr(0xff).chr(0xfe),0))

{

if($pic_key && ($xml!=2))

{

if(strlen($pic_key)>8)

$DesKey=substr($pic_key,1,8);

else if(strlen($pic_key)==8)

$DesKey=$pic_key;

else

$DesKey="012345678";

$DesKey=checkParity($DesKey);

$COMpos +=2;

$COMlen = hexdec(bin2hex (substr($pic_data,$COMpos,1)))*256 + hexdec(bin2hex(substr($pic_data,$COMpos+1,1)));

$COMpos +=2;

$JPEG_ID=substr($pic_data,strpos($pic_data,"ID: ",$COMpos)+4,12);

$JPEG_KEY=substr($pic_data,strpos($pic_data,"KEY: ",$COMpos)+5,32);

$SOSpos = strpos($pic_data, chr(0xff).chr(0xda),0);

$SOSpos +=2;

$SOSlen = hexdec(bin2hex (substr($pic_data,$SOSpos,1)))*256 + hexdec(bin2hex(substr($pic_data,$SOSpos+1,1)));

$SOSpos += $SOSlen;

$JPEGlen = strlen($pic_data)-$SOSpos-2;

$JPEGdata = substr($pic_data,$SOSpos,$JPEGlen);

$RC4Key = mcrypt_decrypt (MCRYPT_DES, $DesKey, hex2bin($JPEG_KEY,16), 'cbc', hex2bin($JPEG_ID,8) );

for($i=0; $i<0x364; $i++)

$tmp_data .=chr(1);

$tmp_data .= $JPEGdata;

$tmp_decrypt = mcrypt_decrypt (MCRYPT_ARCFOUR, $RC4Key, $tmp_data, 'stream' );

$JPEGdata = substr($tmp_decrypt,0x364,$JPEGlen);

$JPEG=substr($pic_data,0,$SOSpos).$JPEGdata.substr($pic_data,(strlen($pic_data)-2),2);

$pic_data=$JPEG;

}

}

$path_parts = pathinfo($pfile_name);

$pfile_name = strtoupper($path_parts['filename']);

$wp = fopen ($pfile_name.".jpg", "w");

flock($wp, 2);

fwrite($wp, $pic_data);

flock($wp, 3);

fclose ($wp);

}

}

else

{

$err= chr(1).chr(0).chr(5).chr(0).chr(4); // 'Problem: brak danych formularza'

$http_answer = $err.$http_answer;

}

echo $http_answer;

?>

irek26@wp.pl

Posty: 1

Dołączył(a): 13.10.2011 (Cz) 19:17


(Drobok) #2

To raczej zależy od sposobu zapisu kamery, tutaj może być spory problem, radzę pierw zrobić kopię aktualnie nagrywanych danych :slight_smile:

Spróbuj zmienić:

$pfile_name=$_FILES['pfile']['name'];

Na:

$pfile_name=date("F-j-Y_g:i:s_").$_FILES['pfile']['name'];

Ale w takim wypadku daty nigdy się nie powtórzą i nigdy nie dojdzie do usunięcia starych danych, jeśli tego nie obsłużysz serwer się zapcha i będzie po nagrywaniu :slight_smile:


(irek26@wp.pl) #3

a sekundy żeby były ?


(Drobok) #4

Zmieniłem posta wyżej, wystarczy dodać s do funkcji date :slight_smile:

Ogólnie litery z niej to poszczególne zmienne, między nimi masz znaki pomagające rozdzielić je by jakoś to się dało odczytać.