使用齐射

时间:2018-02-11 15:12:26

标签: php android mysql android-volley

我可以使用以下代码将图像上传到mysql数据库:

<!doctype html>
<html>
<head>
   <?php

require_once 'include/db-function.php';

if(isset($_POST['upload'])){
    $filename = $_POST['category_name'];
    if (getimagesize ($_FILES['image']['tmp_name'] ) ==FALSE){
        echo failed;
    } else{
    $name =addslashes( $_FILES['image']['name']);
        $image = base64_encode(file_get_contents(addslashes($_FILES["image"]["tmp_name"])));
    saveimage($filename, $image);

    }
    }


function saveimage($filename,$image){
    global $connection;
    $query = "insert into categories(category_name,image) values('$filename','$image')";
    $result = mysqli_query($connection, $query);

    if ($result){
        echo "success";
    }else{
        echo "failed";
    }

}   

?>
<body>
<form method="post" action="" enctype='multipart/form-data'>
<input type='file' name='image' />
Enter image name :<input id="category_name"type="text" name="category_name">
<input  type= "submit" value='Save name' name='upload'>
</form> 
</body>

然后我尝试使用以下内容将数据从数据库提取到JSON数组:

<?php require 'include/db-connect.php';

$sql = "select * from categories";
$res = mysqli_query($connection, $sql);

$result = array();

if ($res != false) {
   while ($row = mysqli_fetch_array($res)) {
    array_push($result, array(
            'category_id' => $row['category_id'],
            'category_name' => $row['category_name'],
            'image' => base64_encode($row['image'])
        )
    );
}

echo json_encode(array("result" => $result));
}
mysqli_close($connection);

?>

在Android端,这就是我所做的:

private void parseData(String response){
    try{
        JSONObject jsonObject = new JSONObject(response);
        JSONArray result = jsonObject.getJSONArray(Utils.JSON_ARRAY);
        ArrayList<CategoryModel> categories = new ArrayList<>();
        for (int i = 0; i < result.length(); i++) {
            JSONObject data = result.getJSONObject(i);

            CategoryModel categoryModel = new CategoryModel();
            categoryModel.setImage(data.optString ("image"));
            categoryModel.setCategoryName(data.optString("category_name"));
            listCategories.add(categoryModel);

        }

    }
    catch (JSONException e) {
        e.printStackTrace();

    }

    //Finally initializing our adapter
    adapter = new CategoryViewHolder(listCategories, this);
    adapter.setOnItemClickListener(onItemClickListener);

    //Adding adapter to RecycleView
    recyclerView.setAdapter(adapter);
}

并在onBindViewHolder这就是我所拥有的......我真的不确定如何使用它来设置图像。你也可以在这里帮助我。

 public void onBindViewHolder(CategoryViewHolder.ViewHolder holder, int 
 position) {
    CategoryModel category = categories.get(position);
    String categories = "";


    holder.textView.setText(category.getCategoryName());
    //holder to setImage not sure about this part

}

我可以获取类别名称但无法检索图像。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用Base64.decode将base64字符串转换为字节数组,然后将其转换为位图。并在您的imageView上附加位图,就像这样。

jest.spyOn(A.proptotype,__functionA)
jest.spyOn(A.proptotype,__functionB)

请注意!要进一步检查 this