Upload souboru pres XMLHttpRequest – MIME type

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
zarubik
Člen | 31
+
0
-

Je to možná víc otázka na PHP, tak se předem omlouvám.

Posílám pres javascript soubor

<script type="text/javascript">
/* ... */
xhr.open("POST", queryString, true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
xhr.setRequestHeader("X-File-Type", file.type);
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.send(file);
/* .. */
</script>

A ted mi jde o zjisteni na strane frameworku o jaky mime typ jde.
Jestli se mohu spolehnout na typ, ktery posilam v hlavicce nebo ho overovat i pomoci PHP. Funguje mi jedine ulozit soubor do tempu, overit typ pak si ho presnout jinam (coz si myslim ze je zbytecna prace navic).

Cast spracovani kodu:

$dest = '..'; // umisteni souboru
$input = fopen("php://input", "r");
$temp = tmpfile();
$realSize = stream_copy_to_stream($input, $temp);
fclose($input);

if ($realSize != $this->getSize()){
	throw new InvalidStateException("Different size.");
}

$target = fopen($dest, "w");
fseek($temp, 0, SEEK_SET);
stream_copy_to_stream($temp, $target);
fclose($target);

Ten typ souboru, bych potreboval vedet jeste pred nahrani souboru do pozadovaneho umisteni, mam primo tridu XMLHttpUploadedFile zdedenou od HttpUploadedFile.

Nebo jestli overovat jenom pomoci koncovky? Je nejaka funkce jenom na prevod koncovky, nebo bych si musel dat do pole mime typ a k tomu priponu?

Diky za napady

Editoval zarubik (4. 10. 2010 9:20)

srigi
Nette Blogger | 558
+
+1
-

Vzdy overuj subor na strane servera – clanok

Upload mozes blokovat uz na strane klienta, neni problem zitit MIME typ pomocou JS, vid FileAPI, objekt File ma v sebe property s MIME typom. Stale vsak musis overovat na strane PHP, lebo zly hacker nema problem MIME typ podvrhnut.