Hej,
Har en uppladdningsfunktion som bara ska tillåta uppladdning av .csv filer. Har gjort såhär:
$upload_allowed = array("application/vnd.ms-excel",
"text/plain"
);
if($intMax != sizeof($arrSize)){
if(!in_array($_FILES['cont_file']['type'], $upload_allowed)){
$error[] = "You are only allowed to upload .csv files";
}else{
echo "success";
}
}
Problemet är att oavsett om jag laddar upp en csv-fil får jag You are only allowed to upload .csv files
Skriver jag ut $_FILES['cont_file']['type'] får jag application/vnd.ms-excel.
Vad kan vara fel?
überfuzzMedlem sedan apr. 2006409 inlägg Frågan är om din browser skickar just application/vnd.ms-excel. Jag tror inte att den gör det, det är väl text/csv om du har en bra läsare. Tyvärr finns det läsare som skickar application/octet-stream. Förresten när jag tänker på det. En läsare kan ju skicka vad som helst.
elak_phpfil.csv kan ju uppfattas som snäll_csvfil.csv om du filtrerar som du gör!
Jag är inte med helt och hållet... Det jag vill göra är ju att bara tillåta .csv filer för uppladdning och det här funkar klockrent med vanliga Exceldok., Bilder osv. så varför funkar det inte med .csv?
De filer jag ska ladda upp är från början Excelark som sparats som .csv, kan det vara problemet?
MeleaMedlem sedan juli 20033 147 inlägg http://codeigniter.com/forums/viewthread/48134/#246712
Kanske kan vara till någon hjälp.
För att validera .csv-filer krävs det tydligen fler mime-types.
'text/comma-separated-values',
'text/csv',
'application/csv',
'application/excel',
'application/vnd.ms-excel',
'application/vnd.msexcel',
'text/anytext',
'application/octet-stream'
$upload_allowed = array('text/comma-separated-values',
'text/csv',
'application/csv',
'application/excel',
'application/vnd.ms-excel',
'application/vnd.msexcel',
'text/anytext',
'application/octet-stream'
);
überfuzzMedlem sedan apr. 2006409 inlägg
MickeA.com skrev:
Jag är inte med helt och hållet... Det jag vill göra är ju att bara tillåta .csv filer för uppladdning och det här funkar klockrent med vanliga Exceldok., Bilder osv. så varför funkar det inte med .csv?
De filer jag ska ladda upp är från början Excelark som sparats som .csv, kan det vara problemet?
Om du har skyddat sidan så att bara du kan ladda upp är det nog ok. Lägg inte uppladdningen så att vem som helst kan komma åt den bara. Då klarar du dig fint med meleas array.
überfuzz skrev:
Om du har skyddat sidan så att bara du kan ladda upp är det nog ok. Lägg inte uppladdningen så att vem som helst kan komma åt den bara. Då klarar du dig fint med meleas array.
Det är ingen fara... Systemet här ett 10-tal användare och det som ska hända här är att .csv filerna går igenom en parser och genererar lite kod...
Om man nu skulle lyckas ladda upp nån annan filtyp så är det enda som händer att det blir phpfel, skulle jag tro.
Tack för hjälpen, ska testa imorgon och se om det funkar med alla dom MIME typerna.
überfuzzMedlem sedan apr. 2006409 inlägg Off topic: Vad har du för parser, kan man få ta sig en titt.
Hmm, det här funkar inte heller, får exakt samma fel, att filtypen inte är tillåten:
$upload_allowed = array( "text/comma-separated-values",
"text/csv",
"application/csv",
"application/excel",
"application/vnd.ms-excel",
"application/vnd.msexcel",
"text/anytext",
"application/octet-stream"
);
if($intMax != sizeof($arrSize)){
if(!in_array($_FILES['cont_file']['type'], $upload_allowed)){
$error[] = "You are only allowed to upload .csv files";
}else{
echo "success";
}
}else{
$error[] = "At least one file is mandatory";
}
Undra hur man ska få ordning på det här...?
überfuzz skrev:
Off topic: Vad har du för parser, kan man få ta sig en titt.
Det är inget märkvärdigt, man laddar in kommaseparerad data och ut på andra sidan genereras htmlkod anpassad för vår sajt.
Det här den här jag använder mig av.
TroxyMedlem sedan mars 20041 505 inlägg Skippa mime-kollen helt. Den är opålitlig och riskerar att spärra även giltiga filer.
Kör bara filen genom din parser. Om det misslyckas så är filen felaktig.
Hantera exceptions och visa felmeddelande till klienten.
Troxy skrev:
Skippa mime-kollen helt. Den är opålitlig och riskerar att spärra även giltiga filer.
Kör bara filen genom din parser. Om det misslyckas så är filen felaktig.
Hantera exceptions och visa felmeddelande till klienten.
Jo... så får det bli.
Eftersom parser ändå kommer fela om filen inte kan läsas så är det ju ingen fara.
Lustigt ändå att det funkar bra med bilder och vanliga excelark, men inte med csv.
Jag testade nu att skapa en .csv manuellt och ladda upp, men samma sak där.
überfuzzMedlem sedan apr. 2006409 inlägg
MickeA.com skrev:
Jo... så får det bli.
Eftersom parser ändå kommer fela om filen inte kan läsas så är det ju ingen fara.
Precis!
Får jag fråga en annan sak? Använder du en klass som skapar en gif-fil? Varför vill du inte spotta ut html-kod?
überfuzz skrev:
Får jag fråga en annan sak? Använder du en klass som skapar en gif-fil? Varför vill du inte spotta ut html-kod?
Som skapar en Gif-fil? Nu är jag inte med alls...?
überfuzzMedlem sedan apr. 2006409 inlägg
MickeA.com skrev:
Som skapar en Gif-fil? Nu är jag inte med alls...?
Jag kollade bara som hastigast på klassen du använder. Då fick jag för mig att den gör om csv till gif. Det är ju en konstig lösning!
überfuzz skrev:
Jag kollade bara som hastigast på klassen du använder. Då fick jag för mig att den gör om csv till gif. Det är ju en konstig lösning!
Aha, jo, det var en konstig lösning, men så funkar det inte.
Jag skickar in det här:
COLUMN 1_1;COLUMN 1_2;COLUMN 1_3;COLUMN 1_4;COLUMN 1_5;COLUMN 1_6;
COLUMN 2_1;COLUMN 2_2;COLUMN 2_3;COLUMN 2_4;COLUMN 2_5;COLUMN 2_6;
COLUMN 3_1;COLUMN 3_2;COLUMN 3_3;COLUMN 3_4;COLUMN 3_5;COLUMN 3_6;
COLUMN 4_1;COLUMN 4_2;COLUMN 4_3;COLUMN 4_4;COLUMN 4_5;COLUMN 4_6;
...och får ut det här:
<table cellpadding="2" cellspacing="0" class="result">
<tr>
<th>Index</th>
<th>Cell n°0</th>
<th>Cell n°1</th>
<th>Cell n°2</th>
</tr>
<tr class="GridRow_Default">
<td>1</td>
<td>col 1_1</td>
<td>col 1_2</td>
<td>col 1_3</td>
</tr>
<tr class="GridAltRow_Default">
<td>2</td>
<td>col 2_1</td>
<td>col 2_2</td>
<td>col 2_3</td>
</tr>
...
</table>
Bara ett verktyg för att underlätta för dom som jobbar med content på vår sajt.