当我尝试通过PHP解析SDK上传文件时,如何限制文件大小?

时间:2015-08-04 15:20:00

标签: php file parse-platform upload

我尝试将文件上传到解析SDK云,从技术上讲它可以正常工作,但现在我想限制用户可以上传的最大文件大小。这是代码:

var data = [
    {
        "word": "hello",
        "favnumber": "0070",
        "item": "item1",
        "color": "red"
   },
   {
        "word": "hello world",
        "favnumber": "0233070",
        "item": "item2",
        "color": "blue",
       "Promo": {
            "Price": 3.99
        }
   },
   {
        "word": "hello mom",
        "favnumber": "0070",
        "item": "item3",
        "color": "pink",
       "Promo": {
            "Price": 4.99
        }
   },
   {
        "word": "hello dad",
        "favnumber": "0070",
        "item": "item4",
        "color": "silver",
        "Promo": {
            "Price": 8.99
        }
   }    
];

var items = document.querySelectorAll('[data-item]');

for (var e in items) {
    var element = items[e];
    var name = $(element).attr('data-item');

    for (var i in data) {
        var item = data[i];

        if (name == item.item) {
            var colorValue = item.color
            var promoPriceValue = item.Promo.Price //this doesn't work//
            $(element).find('p').text(colorValue)//this works//
            $(element).find('span').text(promoPriceValue)
        }
    }
}

4 个答案:

答案 0 :(得分:2)

只需使用if语句并获取文件的大小

$_FILES['image']['size']
//The size, in bytes, of the uploaded file.

类似

if($_FILES['image']['size'] < 10000000)
{
    // save file to Parse
    $file = ParseFile::createFromData( file_get_contents( $_FILES['image' ['tmp_name'] ), $_FILES['image']['name']  );
    $file->save();
}
else
{
    //Tell user that the file is too big, however you prefer
}

客户方面的东西: 直接来自PHP文档:

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>
  

上面示例中的网址应该被替换,并指向a   PHP文件。

     

MAX_FILE_SIZE隐藏字段(以字节为单位)必须位于   文件输入字段,其值是接受的最大文件大小   PHP。应始终使用此表单元素,因为它可以节省用户   等待传输大文件的麻烦只是为了找到它   它太大了,转移失败了。请记住:愚弄这个   在浏览器端设置非常简单,所以永远不要依赖文件   此功能会阻止更大的尺寸。它只是一个   应用程序客户端用户的便利功能。   但是,最大尺寸的PHP设置(在服务器端)   不能被愚弄。

答案 1 :(得分:0)

如果查看$_FILES数组,您会看到每个被调用的$_FILES['image']['size']

传递了一段数据

如果您想限制PHP端的大小,那么只需测试该字段

if ( isset( $_FILES['image'] ) ) {
    if ( $_FILES['image']['size'] < 10000 ) {
        // save file to Parse
        $file = ParseFile::createFromData( 
                   file_get_contents( $_FILES['image']['tmp_name'] ), 
                   $_FILES['image']['name']  );
        $file->save();
     } else {
         // return some sort of error
     }
}

请记住,$_FILES['image']['size']记录在BYTES中。

答案 2 :(得分:0)

试试这个,

if(isset($_FILES['image']) {
if($_FILES['image']['size'] > 10485760) { //10 MB (size is also in bytes)
    // File too big
} else {
     $file = ParseFile::createFromData( 
               file_get_contents( $_FILES['image']['tmp_name'] ), 
               $_FILES['image']['name']  );
     $file->save();
}
}

答案 3 :(得分:0)

您可以在解析文件之前限制文件大小。见下文:

    if ( isset( $_FILES['image'] ) ) {
        $maxsize    = 2097152; // 2MB 

        if(($_FILES['image']['size'] >= $maxsize) || ($_FILES["image"]["size"] == 0)) {
            $message = 'File too large. File must be less than 2 megabytes.'; 
            echo '<script type="text/javascript">alert("'.$message.'");</script>'; 
        }

        // save file to Parse
        $file = ParseFile::createFromData( file_get_contents( $_FILES['image']['tmp_name'] ), $_FILES['image']['name']  );
        $file->save();
    }