1

私は実際にはあまりPHPを知りません。とにかく、次のphpを使用して.csvファイルをアップロードできません。upload_max サイズ関連の属性の問題を修正しました。ローカルでは問題なく動作しますが、サンドボックスでは動作しません。ファイルの種類の問題ですか?

このようなものを印刷することしかできません...これはまったく役に立ちません。"-- ロードする CSV ファイル: >>> 有効なファイルではありません: 1 "

どこを修正すればよいですか?何に対応するかわからない値「1」だけでなく、完全な PHP エラーメッセージを出力するにはどうすればよいですか? つまり...この「UPLOAD_ERR_INI_SIZE: 1」のようなより便利な印刷を出力しますか?

<?php
// 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 “Only variables should be passed by reference” 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")
            && isAllowedExtension($file["name"])
            && ($file["size"] < 200000000)
        )
        {   
            move_uploaded_file($file["tmp_name"], $newFileLoc);
            //echo $file_result.=" >>> File uploaded successfull!!";
            echo "|".$path;//"filePath : " . $newFileLoc;

        }else{
            echo " >>> NOT a file valid: ". isAllowedExtension($file["name"]);
        }       
}
?>

これは、エラーを正しくキャッチするために別のユーザーが提案したように追加された行です。申し訳ありませんが、私はPHPをあまり知りません。とにかく、表示されるエラーは「-- CSV file to load: >>> NOT a file valid: 1」です。

<?php
// using upload at click from http://code.google.com/p/upload-at-click/
// FileData is the name for the input file

ini_set('display_errors', 1); error_reporting(E_ALL);

$file_result = "";
$file = $_FILES['Filedata'];

$allowedExtensions = array("csv", "txt");
$arrayVar = explode(".", $file["name"]);
$extension = end($arrayVar);
4

1 に答える 1

1

問題のブロックは次のとおりです。

if( ( $file["type"] == "application/vnd.ms-excel" || $file["type"] == "text/plain" ) && 
    isAllowedExtension($file["name"]) && 
    ( $file["size"] < 200000000 ) )
{   
    move_uploaded_file($file["tmp_name"], $newFileLoc);

    //echo $file_result.=" >>> File uploaded successfull!!";

    echo "|".$path;//"filePath : " . $newFileLoc;
}
else
{
    echo " >>> NOT a file valid: ". isAllowedExtension($file["name"]);
}

else を押していることに注意してください。echo「1」はisAllowedExtension()ブール値を返すためです。これは真であり、印刷時に「1」(「0」ではなく) として示されます。

そこにあるあなたの条件の1つifが失敗しています。私はそれらを少し分けて、どれが特にあるかを見ていきます.

編集例:

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";
}

print_r() $fileまたは、その値が何であるかを確認することもできます。

于 2012-08-17T17:30:55.730 に答える