Datei-upload-Fehler "application/octet-stream"
Weiß ich nicht wirklich viel von PHP. Aber irgendwie bin ich nicht in der Lage, hochladen .csv-Datei mit dem folgenden php. Ich habe das problem behoben mit upload_max Größe-bezogene Attribute. Funktioniert einwandfrei auf meinem lokalen, aber nicht auf die sandbox. Die Fehlermeldung "application/octet-stream". was soll ich tun?
Daten ist sehr einfach, gespeichert .csv-format
27589 16990 161.7000095 0.838494
27589 17067 161.7000095 0.838494
27820 17144 315.7000095 0.859458
27820 17221 315.7000095 0.859458
27820 17606 315.7000095 0.866033
27820 17683 315.7000095 0.866033
Fehler-Ausgabe: "-- CSV-Datei geladen werden: Ungültiger Typ: application/octet-stream"
<?php
ini_set('display_errors', 1); error_reporting(E_ALL);
//using upload at click from http://code.google.com/p/upload-at-click/
//FileData is the name for the input file
$file_result = "";
$file = $_FILES['Filedata'];
$allowedExtensions = array("csv", "txt");
$arrayVar = explode(".", $file["name"]);
$extension = end($arrayVar);
//commented out for strict standard error
//$extension = end(explode(".", $file["name"]));
function isAllowedExtension($fileName) {
global $allowedExtensions;
return in_array(end(explode(".", $fileName)), $allowedExtensions);
}
if($file["error"] > 0){
echo "failure to upload the file >>> ". "Error code: ".$file["error"]."<br>";
}else{
//echo " >>> CURRENT DIR: ".getcwd() . "\n";
$workDir = getcwd();
$dir = substr($workDir, 0, -10);
$path = $file["name"];
$newFileLoc = $dir.$path;
$file_result.=
"<br> Upload: " . $file["name"] . "<br>" .
" Type: " . $file["type"] . "<br>" .
" Size: " . $file["size"] . "<br>" .
" file uploaded to: ".$newFileLoc."<br>";
//txt - text/plain
//rtf - application/msword
//dat/obj - application/octet-stream
//csv - application/vnd.ms-excel
//maximum 200 MB file - 200,000,000 k
if ($file["type"] == "application/vnd.ms-excel" || $file["type"] == "text/plain"){
if( isAllowedExtension($file["name"]) )
{
if( $file["size"] < 200000000 )
{
move_uploaded_file($file["tmp_name"], $newFileLoc);
echo "|".$path;//"filePath : " . $newFileLoc;
}
else
{
echo "Invalid file size: " . $file["size"] . "\n";
}
}
else
{
echo "Invalid extension: " . $file["name"]."\n";
}
}
else
{
echo "Invalid type: " . $file["type"] . "\n";
}
}
?>
Die
??????????????? sorry, nicht sicher, was Sie bedeuten und was Sie vorschlagen. Würden Sie bitte vorschlagen Verlauf der Aktion und zu beheben?
B, wenn Sie vorschlagen, die Verwendung der verschiedenen Browser, die ich ausprobiert habe, die aber noch nicht geladen. Viele web-Diskussionen vorgeschlagen, aber nichts schlüssig...
['type']
parameter wird von der sendenden client. Wenn Sie app/octet, dann ist das, was der browser liefert.??????????????? sorry, nicht sicher, was Sie bedeuten und was Sie vorschlagen. Würden Sie bitte vorschlagen Verlauf der Aktion und zu beheben?
B, wenn Sie vorschlagen, die Verwendung der verschiedenen Browser, die ich ausprobiert habe, die aber noch nicht geladen. Viele web-Diskussionen vorgeschlagen, aber nichts schlüssig...
InformationsquelleAutor user1518600 | 2012-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, das Letzte Stück code wie diesem, $Datei['type'] ist festgelegt, indem der client, nicht der server. Sollte in Ordnung sein diese Weise. Stellen Sie sicher, laden Sie die Dateien an einem Ort nicht erreichbar zu öffentlichen.
OK, so laden Sie die CSV-Format in eine andere Datei? Es sollte der gleiche code in die Datei, kommentieren Sie die Zeile(N) wo der Typ geprüft wird (sollte etwa die gleiche sein wie in meinem Beispiel).
Ja, Sie sollten überprüfen, die Datei dort laden Sie die CSV und ermöglichen application/octet-stream.
if( $file["type"] == "application/vnd.ms-excel" || $file["type"] == "text/plain" || $file["type"] == "application/octet-stream"){ [...]
Danke, John, Es funktioniert jetzt! Ich bin das hochladen der Daten aus dem CSV-Format in ein Balkendiagramm. Aber würden Sie bitte erklären, warum es geklappt hat? Da die änderungen waren gerade dabei das prüfen der Datei-Attribute sind nicht Sie? Auch die fgetcsv() ist die überprüfung der Datei die Rechte? Ist der Schlüssel zum verschieben der hochgeladenen Datei an einen neuen Speicherort? Ich es nicht geben, also ich denke, es speichert in einigen temp-Ordner default. Aber was tut man dies tun und warum es beheben application/octet-stream-Fehler?
application/octet-stream ist der Typ der Datei. Diese wird durch den browser des client. fgetcsv() ist nur zu prüfen, ob Ihre CSV-Datei geladen werden können als CSV-Datei zu überprüfen, ist es der richtige Dateityp ist, als Ersatz für die Linien habe ich entfernt.
InformationsquelleAutor Green Black