使用PHP和AngularJS上传图像

时间:2015-04-09 09:15:29

标签: javascript php angularjs sqlite

我正在开发一个管理面板,它将使用AngularJS和PHP在SQLite数据库上添加数据,然后以HTML格式显示。数据作为数组文本日期等等都很好。我的问题是在指定的文件夹中上传一个Image并将路径存储在我的数据库中。

这是我在PHP中存储数据的PHP

<?php

try {

    if (
        empty($_POST['item']) ||
        empty($_POST['description']) || 
        empty($_POST['release']) || 
        empty($_POST['demo']) ||
        empty($_POST['type']) ||
        empty($_POST['live']) ||
        empty($_POST['client'])
        ) {
        throw new PDOException("Invalid Request");
        }

    $item = $_POST['item'];
    $description = $_POST['description'];
    $release = $_POST['release'];
    $demo = $_POST['demo'];
    $type = $_POST['type'];
    $live = $_POST['live'];
    $client = $_POST['client'];

    $objDb = new PDO('sqlite:../database/database');
    $objDb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "INSERT INTO 'items'
            ('id', 'item', 'description', 'release', 'demo', 'type', 'live', 'client')
            VALUES (null, ?, ?, ?, ?, ?, ?, ?)";

    $statement = $objDb->prepare($sql);

    if (!$statement->execute(array($item, $description, $release, $demo, $type, $live, $client))) {
        throw new PDOException("The execute method failed");
    } 

这是我的PHP,它将图像上传到指定的文件夹

<?php

if (isset($_POST['submit'])) {

    $validextensions = array("jpeg", "jpg", "png");
    $temporary = explode(".", $_FILES["file"]["name"]);
    $file_extension = end($temporary);

    if ((($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/jpeg")
            ) && ($_FILES["file"]["size"] < 1000000)
            && in_array($file_extension, $validextensions)) {

        if ($_FILES["file"]["error"] > 0) {
            echo "Return Code: " . $_FILES["file"]["error"] . "<br/><br/>";
        } else {

            echo "<span>Your File Uploaded Succesfully...!!</span><br/>";
            echo "<br/><b>File Name:</b> " . $_FILES["file"]["name"] . "<br>";
            echo "<b>Type:</b> " . $_FILES["file"]["type"] . "<br>";
            echo "<b>Size:</b> " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
            echo "<b>Temp file:</b> " . $_FILES["file"]["tmp_name"] . "<br>";


            if (file_exists("upload/" . $_FILES["file"]["name"])) {
                echo $_FILES["file"]["name"] . " <b>already exists.</b> ";
            } else {
                move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
                echo "<b>Stored in:</b> " . "upload/" . $_FILES["file"]["name"];
            }

        }
    } else {
        echo "<span>***Invalid file Size or Type***<span>";
    }
}
?>

这是我从角度

的插入函数
$scope.insert = function() {

        if ($scope.goodToGo()) {

        var thisData = "item=" + $scope.item;
        thisData += "&description=" + $scope.description;
        thisData += "&release=" + $scope.release;
        thisData += "&demo=" + $scope.demo; 
        thisData += "&client=" + $scope.client;
        thisData += "&type=" + $scope.type;
        thisData += "&live=" + $scope.live;
        thisData += "&image=" + $scope.image;

        $http({
            method : 'POST',
            url : urlInsert,
            data : thisData,
            headers : {'Content-Type' : 'application/x-www-form-urlencoded'}
        })

        .success(function(data){
            if(_recordAddedSuccessfully(data)){
                $scope.items.push({

                    id : data.item.id,
                    item : data.item.item,
                    description : data.item.description,
                    release : data.item.release,
                    demo : data.item.demo,
                    client : data.item.client,
                    client_name : data.item.client_name,
                    type : data.item.type,
                    type_name : data.item.type_name,
                    live : data.item.live,
                    live_name : data.item.live_name,
                    image : data.item.image,
                    done : data.item.done

                });

                $scope.clear();

            }
        })
        .error(function(data, status, headers, config){
            throw new Error('Something went wrong with inserting');
        });

        }
    };

有人知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

如果您要上传图片,则content type应设置为multipart/form-data,即

headers : {'Content-Type' : 'multipart/form-data'}

休息看起来不错。