将图像上传到服务器并将带有文本值的路径存储到MySQL中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将图像上传到服务器并将带有文本值的路径存储到MySQL中相关的知识,希望对你有一定的参考价值。

我仍然是Andorid编程的初学者,并且需要以下帮助:

我目前有2个代码,第一个代码将图像上传到服务器,并将路径存储到mysql表中。第二个代码将2个EditText字段值存储到MySQL数据库表中。我真正想要的是结合这两个代码,因此应该可以将图像上传到服务器,然后将具有2个EditText字段值的关联字符串路径立即存储到MySQL数据库表中。

1。)为了上传图像并将字符串路径存储到MySQL表中,我有以下代码:

-将图像上传到服务器(JAVA端):

public class MainActivity extends Activity implements OnClickListener 

    private TextView messageText;
    private Button uploadButton, btnselectpic;
    private ImageView imageview;
    private int serverResponseCode = 0;
    private ProgressDialog dialog = null;

    private String upLoadServerUri = null;
    private String imagepath = null;

    @Override
    public void onCreate(Bundle savedInstanceState) 

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        uploadButton = (Button) findViewById(R.id.uploadButton);
        btnselectpic = (Button) findViewById(R.id.button_selectpic);
        messageText = (TextView) findViewById(R.id.messageText);
        imageview = (ImageView) findViewById(R.id.imageView_pic);

        btnselectpic.setOnClickListener(this);
        uploadButton.setOnClickListener(this);
        upLoadServerUri = "http://10.0.2.2/uploads/UploadToServer.php";
        ImageView img = new ImageView(this);

    

    @Override
    public void onClick(View arg0) 
        if (arg0 == btnselectpic) 
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(
                    Intent.createChooser(intent, "Complete action using"), 1);
         else if (arg0 == uploadButton) 

            dialog = ProgressDialog.show(MainActivity.this, "",
                    "Uploading file...", true);
            messageText.setText("uploading started.....");
            new Thread(new Runnable() 
                public void run() 

                    uploadFile(imagepath);

                
            ).start();
        

    

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 

        if (requestCode == 1 && resultCode == RESULT_OK) 
            // Bitmap photo = (Bitmap) data.getData().getPath();

            Uri selectedImageUri = data.getData();
            imagepath = getPath(selectedImageUri);
            Bitmap bitmap = BitmapFactory.decodeFile(imagepath);
            imageview.setImageBitmap(bitmap);
            messageText.setText("Uploading file path:" + imagepath);

        
    

    public String getPath(Uri uri) 
        String[] projection =  MediaStore.Images.Media.DATA ;
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    

    public int uploadFile(String sourceFileUri) 

        String fileName = sourceFileUri;

        HttpURLConnection conn = null;
        DataOutputStream dos = null;
        String lineEnd = "\r\n";
        String twoHyphens = "--";
        String boundary = "*****";
        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = 1 * 1024 * 1024;
        File sourceFile = new File(sourceFileUri);

        if (!sourceFile.isFile()) 

            dialog.dismiss();

            Log.e("uploadFile", "Source File not exist :" + imagepath);

            runOnUiThread(new Runnable() 
                public void run() 
                    messageText.setText("Source File not exist :" + imagepath);
                
            );

            return 0;

         else 
            try 

                // open a URL connection to the Servlet
                FileInputStream fileInputStream = new FileInputStream(
                        sourceFile);
                URL url = new URL(upLoadServerUri);

                // Open a HTTP connection to the URL
                conn = (HttpURLConnection) url.openConnection();
                conn.setDoInput(true); // Allow Inputs
                conn.setDoOutput(true); // Allow Outputs
                conn.setUseCaches(false); // Don't use a Cached Copy
                conn.setRequestMethod("POST");
                conn.setRequestProperty("Connection", "Keep-Alive");
                conn.setRequestProperty("ENCTYPE", "multipart/form-data");
                conn.setRequestProperty("Content-Type",
                        "multipart/form-data;boundary=" + boundary);
                conn.setRequestProperty("uploaded_file", fileName);

                dos = new DataOutputStream(conn.getOutputStream());

                dos.writeBytes(twoHyphens + boundary + lineEnd);
                dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""
                        + fileName + "\"" + lineEnd);

                dos.writeBytes(lineEnd);

                // create a buffer of maximum size
                bytesAvailable = fileInputStream.available();

                bufferSize = Math.min(bytesAvailable, maxBufferSize);
                buffer = new byte[bufferSize];

                // read file and write it into form...
                bytesRead = fileInputStream.read(buffer, 0, bufferSize);

                while (bytesRead > 0) 

                    dos.write(buffer, 0, bufferSize);
                    bytesAvailable = fileInputStream.available();
                    bufferSize = Math.min(bytesAvailable, maxBufferSize);
                    bytesRead = fileInputStream.read(buffer, 0, bufferSize);

                

                // send multipart form data necesssary after file data...
                dos.writeBytes(lineEnd);
                dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

                // Responses from the server (code and message)
                serverResponseCode = conn.getResponseCode();
                String serverResponseMessage = conn.getResponseMessage();

                Log.i("uploadFile", "HTTP Response is : "
                        + serverResponseMessage + ": " + serverResponseCode);

                if (serverResponseCode == 200) 

                    runOnUiThread(new Runnable() 
                        public void run() 
                            String msg = "File Upload Completed.\n\n See uploaded file here : \n\n"
                                    + " F:/wamp/wamp/www/uploads";
                            messageText.setText(msg);
                            Toast.makeText(MainActivity.this,
                                    "File Upload Complete.", Toast.LENGTH_SHORT)
                                    .show();
                        
                    );
                

                // close the streams //
                fileInputStream.close();
                dos.flush();
                dos.close();

             catch (MalformedURLException ex) 

                dialog.dismiss();
                ex.printStackTrace();

                runOnUiThread(new Runnable() 
                    public void run() 
                        messageText
                                .setText("MalformedURLException Exception : check script url.");
                        Toast.makeText(MainActivity.this,
                                "MalformedURLException", Toast.LENGTH_SHORT)
                                .show();
                    
                );

                Log.e("Upload file to server", "error: " + ex.getMessage(), ex);
             catch (Exception e) 

                dialog.dismiss();
                e.printStackTrace();

                runOnUiThread(new Runnable() 
                    public void run() 
                        messageText.setText("Got Exception : see logcat ");
                        Toast.makeText(MainActivity.this,
                                "Got Exception : see logcat ",
                                Toast.LENGTH_SHORT).show();
                    
                );
                Log.e("Upload file to server Exception",
                        "Exception : " + e.getMessage(), e);
            
            dialog.dismiss();
            return serverResponseCode;

         // End else block
    


-将图像上传到服务器并存储字符串路径(PHP端::)>

$file_path = "uploads/";

$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) 
  // replace $host,$username,$password,$dbname with real info
  $link=mysqli_connect($host,$username,$password,$dbname);
  mysqli_query($link,"INSERT INTO `files` (filename,path) VALUES ('".$_FILES['uploaded_file']['tmp_name']."','".$file_path."')") or trigger_error($link->error."[ $sql]");
  mysqli_close($link);

 else
    echo "fail";

2。)

要将android的EditText值插入MySQL数据库,我具有以下代码:

-将值插入MySQL数据库表(JAVA端:

public class MainActivity extends Activity 

    String name;
    String id;
    InputStream is=null;
    String result=null;
    String line=null;
    int code;

    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final EditText e_id=(EditText) findViewById(R.id.editText1);
        final EditText e_name=(EditText) findViewById(R.id.editText2);
        Button insert=(Button) findViewById(R.id.button1);

        insert.setOnClickListener(new View.OnClickListener() 

        @Override
        public void onClick(View v) 
            // TODO Auto-generated method stub

            id = e_id.getText().toString();
            name = e_name.getText().toString();

            insert();
        
    );
    

    public void insert()
    
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

    nameValuePairs.add(new BasicNameValuePair("id",id));
    nameValuePairs.add(new BasicNameValuePair("name",name));

        try
        
        HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://10.0.2.2/insert.php");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost); 
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
            Log.e("pass 1", "connection success ");
    
        catch(Exception e)
    
            Log.e("Fail 1", e.toString());
            Toast.makeText(getApplicationContext(), "Invalid IP Address",
            Toast.LENGTH_LONG).show();
         

        try
        
            BufferedReader reader = new BufferedReader
            (new InputStreamReader(is,"iso-8859-1"),8);
            StringBuilder sb = new StringBuilder();
            while ((line = reader.readLine()) != null)
        
                sb.append(line + "\n");
            
            is.close();
            result = sb.toString();
        Log.e("pass 2", "connection success ");
    
        catch(Exception e)
    
            Log.e("Fail 2", e.toString());
         

    try
    
            JSONObject json_data = new JSONObject(result);
            code=(json_data.getInt("code"));

            if(code==1)
            
        Toast.makeText(getBaseContext(), "Inserted Successfully",
            Toast.LENGTH_SHORT).show();
            
            else
            
         Toast.makeText(getBaseContext(), "Sorry, Try Again",
            Toast.LENGTH_LONG).show();
            
    
    catch(Exception e)
    
            Log.e("Fail 3", e.toString());
    
    

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
        

-向MySQL数据库表中插入值(PHP端:]

<?php
    $host='127.0.0.1';
    $uname='root';
    $pwd='password';
    $db="android";

    $con = mysql_connect($host,$uname,$pwd) or die("connection failed");
    mysql_select_db($db,$con) or die("db selection failed");

    $id=$_REQUEST['id'];
    $name=$_REQUEST['name'];

    $flag['code']=0;

    if($r=mysql_query("insert into sample values('$id','$name') ",$con))
    
        $flag['code']=1;
        echo"hi";
    

    print(json_encode($flag));
    mysql_close($con);
?>

我如何组合1.)和2。)?

我尝试了将近3天,但它根本无法正常工作,并且我感到失望:S。希望有人能帮忙。

提前感谢。

我仍然是Andorid编程的初学者,并且需要以下帮助:我目前有2个代码,第一个代码将图像上载到服务器并将路径存储到...

答案
首先通过在两个不同的函数中调用这两个代码文件来在同一活动中合并它们并在上传图像文件时使用substring函数从imagepath字符串中获取图像名称并在服务器端发送该图像名称以及JSON数据,同时以ip_address / image_upload_folder / imagename格式存储该图像路径。
另一答案
完整代码,请@Sini。 Av在附加的应用中尝试了t enter image description here,但未成功]

以上是关于将图像上传到服务器并将带有文本值的路径存储到MySQL中的主要内容,如果未能解决你的问题,请参考以下文章

将带有文本(已连接)的图像上传到 Firebase 存储

在spring MVC中将图像上传到服务器并将参考存储在mysql数据库中[关闭]

使用 PHP 上传多个图像,并将条目提交到 mysql

使用颤振将图像上传并存储到firebase

laravel rest api将文件上传到服务器

提交带有上传图片选项的表单时出错。 PHP 代码点火器