php - 如何保存多个文件对象以使用php sdk解析后端?

标签 php html parse-platform

我有一个带有类型文件(多个)的 html 输入:

  <input id="image" type="file" name="dog[]" multiple>

我如何使用解析关系将它们上传到带有“图像”和“狗”表的解析?

或者有更好的方法来存储关系吗?请指教。谢谢

代码尝试:

        <?php
        require 'vendor/autoload.php';

        session_start();

        use Parse\ParseClient;
        use Parse\ParseUser;
        use Parse\ParseSessionStorage;
        use Parse\ParseObject;
        use Parse\ParseFile;
        use Parse\ParseGeoPoint;

        ParseClient::initialize('xxx', 'yyy', 'zzz');
        ParseClient::setStorage(new ParseSessionStorage());
        $currentUser = ParseUser::getCurrentUser();

        $filearray = [];

        $count = 0;

        if (isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") {
            foreach ($_FILES['dog']['name'] as $f => $name) {
                if ($_FILES['dog']['error'][$f] == 4) {
                    continue; // Skip file if any error found
                }
                if ($_FILES['dog']['error'][$f] == 0) {
                    $tmp = $_FILES['dog']['tmp_name'][$count];
                    $count = $count + 1;

                    $file = ParseFile::createFromData(file_get_contents($tmp), $_FILES['dog']['name']);
                    $file->save();
                    array_push($filearray, $file);
                }
            }
        }
     $dogobj = new ParseObject("Dog");
     $dogobj->setArray("dogimage", $filearray);

     try {
         $dogobj->save();
     }  catch (ParseException $ex) {
         echo 'Failed to create new object, with error message: ' . $ex->getMessage();
     }

编辑: 感谢回复,这是我发现的错误

注意:未定义索引:第 31 行 ../index.php 中的 restaurant_images

警告:第 31 行的 ../index.php 中为 foreach() 提供的参数无效 使用 objectId 创建的新对象:fz1hnCembE

第 31 行指的是 foreach ($_FILES['restaurant']['name'] as $f => $name) {

如您在上面的消息中看到的,我保存成功的对象,找不到图像

最佳答案

确保表单的属性enctype 的值为multipart/form-data 否则超全局数组$_FILES 将为空

<form action="" method="post" enctype="multipart/form-data">
    <input id="image" type="file" name="dog[]" multiple>
    <input type="submit"/>
</form>

<?php
if (isset($_FILES['dog']) === true) {
    $dog = $_FILES['dog'];
    $limit = count(current($dog));
    for ($i = 0; $i < $limit; $i++) {
        $error = $dog['error'][$i];
        if ($error === UPLOAD_ERR_OK) {
            $name = $dog['name'][$i];
            $type = $dog['type'][$i];
            $tmp_name = $dog['tmp_name'][$i];
            $size = $dog['size'][$i];
            //other code
        }
    }
}
?>

关于php - 如何保存多个文件对象以使用php sdk解析后端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32475890/

相关文章:

php - 如何使用 java 将长 blob(图像)上传到 mysql 数据库并在 php 中检索?

javascript - parse还活着,但是如何通过 'index'查询

swift - PFQuery 中的逻辑运算符错误

php - CMultiFileUpload 类不在数据库 yii 上插入图像名称

php - 自动递增的唯一字符串 ID

Jquery 可拖动和可排序

html - 不使用 img 元素的 css 背景图像回调

javascript - Parse.com 从其他类 Cloud Code 中的子查询获取用户

php - 使用 json 和 $_GET 和 $_POST 方法的 Google CHARTS

html - CSS 粘性页脚,带有可滚动内容的页眉