php - 想要存储图像路径

标签 php android mysql

我正在尝试制作一个应用程序,注册用户必须上传个人资料图片。 之后,当用户及其其他凭据登录时,也应该显示用户的图像。我还想将图像的路径传递到MySql中的表中。我的图像存储在服务器的文件夹中,而用户详细信息存储在 MySql 的表中。因此,当用户与凭据一起登录时,图像也应该显示。但是当我尝试注册时出现错误并且图像未上传。我的应用程序崩溃了。

PHP 文件:

<?php

  $con=mysqli_connect("mysql8.000webhost.com","a6391170_root","root123","a6391170_sanjay");

  $name = $_POST["name"];
  $age = $_POST["age"];
  $username = $_POST["username"];
  $password = $_POST["password"];
  $name1=$_POST["name1"];


  $imagepath="pictures1/" . $name1 . ".JPG";

  $statement = mysqli_prepare($con, "INSERT INTO `user1` (name, age, username, password,name1,imagepath) VALUES (?, ?, ?, ?,?,?)");
  mysqli_stmt_bind_param($statement, "sissss", $name, $age, $username, $password,$name1,$imagepath);
  mysqli_stmt_execute($statement);

  mysqli_stmt_close($statement);

  mysqli_close($con);

?>

JAVA 文件:

           UploadImage ui=new UploadImage(image,etName1.getText().toString());
            ui.execute();
            User user = new User(name, age, username, password,name1);
            registerUser(user);
            break;


        case R.id.upImage:
            Intent i=new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(i,RESULT_IMAGE);

            Toast.makeText(getApplicationContext(),"Selecting Image",Toast.LENGTH_LONG).show();
            break;

    }
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==RESULT_IMAGE && resultCode==RESULT_OK && data!=null)
    {
        Uri selectedImage=data.getData();
        imageUp.setImageURI(selectedImage);


        String[] filePathColumn = { MediaStore.Images.Media.DATA };

        // Get the cursor
        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        // Move to first row
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        imgPath = cursor.getString(columnIndex);
        cursor.close();







        Toast.makeText(getApplicationContext(),"Image Selected",Toast.LENGTH_LONG).show();
    }
    }


private class  UploadImage extends AsyncTask<Void, Void, Void>
{
    Bitmap image;
    String name1;



    public UploadImage(Bitmap image, String name1)
    {

        this.image=image;
        this.name1=name1;

    }



    @Override
    protected void onPreExecute() {
        super.onPreExecute();


    }

    @Override
    protected  Void doInBackground(Void... params) 
    {
    System.out.println("here"); 
        ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
        image.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);
        String encodedImage= Base64.encodeToString(byteArrayOutputStream.toByteArray(),Base64.DEFAULT);

        ArrayList<NameValuePair> dataToSend=new ArrayList<NameValuePair>();
        dataToSend.add(new BasicNameValuePair("image",encodedImage));
        dataToSend.add(new BasicNameValuePair("name1",name1));



        HttpParams httpRequestParams=getHttpRequestParams();
        HttpClient client= new DefaultHttpClient(httpRequestParams);
        HttpPost post=new HttpPost(SERVER_ADDRESS + "upload.php");



        try
        {
            post.setEntity(new UrlEncodedFormEntity(dataToSend));
            client.execute(post);


        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onProgressUpdate(Void... values) {   
        // TODO Auto-generated method stub
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(Void result) {

        super.onPostExecute(result);

        Toast.makeText(getApplicationContext(), "Image Uploaded", Toast.LENGTH_SHORT).show();
    }

}

private HttpParams  getHttpRequestParams()
{


    HttpParams httpRequestParams=new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpRequestParams,1000*30);
    HttpConnectionParams.setSoTimeout(httpRequestParams,1000*30);
    return httpRequestParams;
}

最佳答案

这可能对你有帮助

    <?
$con=mysqli_connect("mysql8.000webhost.com","a6391170_root","root123","a6391170_sanjay");

$name = $_POST["name"];
$age = $_POST["age"];
$username = $_POST["username"];
$password = $_POST["password"];

$UploadedFileName=$_FILES['name1']['name'];
if($UploadedFileName!='')
{
                $upload_directory = "pictures1/";
                $imagepath=$upload_directory.$UploadedFileName;
                if(move_uploaded_file($_FILES['name1']['tmp_name'], $upload_directory.$UploadedFileName))
                {    
                     $statement = mysqli_prepare($con, "INSERT INTO `user1`(name, age, username, password,name1,imagepath) 
                            VALUES(?, ?, ?, ?, ?, ?) ");
                     mysqli_stmt_bind_param($statement, "sissss", $name, $age, $username, $password,$UploadedFileName,$imagepath);
                     mysqli_stmt_execute($statement);
                     mysqli_stmt_close($statement);
                }
}

mysqli_close($con);
?>

关于php - 想要存储图像路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32316034/

相关文章:

Android 的微调器在文本太长时自动滚动

Android ListView按下后退按钮后重复数据

mysql - 从两个独立的表中选择数据

php - 我如何使用带有简单字符串和通配符的 php 的 preg_replace?

android - Volley 错误输出服务器端发送的错误信息

android - 引用旧 fragment 的回调方法

mysql - 来自 Sql 数据库的简单随机样本

php - 如何使用php和mysql从外表中搜索数据?

php - 'assert' 忽略当前命名空间是一个错误吗?

php - 关于 URL 结构的建议 : Forced to have a question mark in the URL