Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP将图像从应用程序上载到服务器_Php_Android_Angularjs_Image_Onsen Ui - Fatal编程技术网

使用PHP将图像从应用程序上载到服务器

使用PHP将图像从应用程序上载到服务器,php,android,angularjs,image,onsen-ui,Php,Android,Angularjs,Image,Onsen Ui,我有一个使用Monaca/Onsen UI和AngularJS构建的跨平台应用程序。 该应用程序允许用户拍摄图像(照片),并按预期工作 接下来,我想将这些图像上传到我的服务器上,以便存储和将来使用 我让应用程序图像捕获按预期工作,我已经在服务器上实现了一个PHP解决方案,似乎正在工作,但我似乎看不到图像 我用于捕获和上传的应用程序代码如下所示(目前我只是访问图像库并选择图像进行测试,而不是捕获它们,但这两种解决方案都有效): 从成功响应来看,似乎正在发送图像,但当我检查图像应该保存到的文件夹(C

我有一个使用Monaca/Onsen UI和AngularJS构建的跨平台应用程序。 该应用程序允许用户拍摄图像(照片),并按预期工作

接下来,我想将这些图像上传到我的服务器上,以便存储和将来使用

我让应用程序图像捕获按预期工作,我已经在服务器上实现了一个PHP解决方案,似乎正在工作,但我似乎看不到图像

我用于捕获和上传的应用程序代码如下所示(目前我只是访问图像库并选择图像进行测试,而不是捕获它们,但这两种解决方案都有效):

从成功响应来看,似乎正在发送图像,但当我检查图像应该保存到的文件夹(C:\xampp\htdocs\public\api\upload)时,该文件夹是空的。服务器端详细信息是使用AWS上托管的Laravel框架的Sximo模板

处理服务器端保存的PHP代码如下所示:

<?php
    // Connect to Database
    $DB_HOST = 'localhost';
    $DB_USER = 'root';
    $DB_PASS = '';
    $DB_NAME = 'myDB';

    $mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);

    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    // Allow Headers
    header('Access-Control-Allow-Origin: *');
    $new_image_name = urldecode($_FILES["file"]["name"]).".jpg";
    // Move files into upload folder
    move_uploaded_file($_FILES["file"]["tmp_name"], 'C:\xampp\htdocs\public\api\upload'.$new_image_name);

mysqli_close($mysqli);

这是我用来将图像从gallery应用程序发送到服务器的asynktask

public static class requestPostReportPhoto extends AsyncTask<String, Void, String> {

    Bitmap image;
    String JSON_STRING;

    @Override
    protected void onPreExecute(){
        String fileUrl = Environment.getExternalStorageDirectory()+"/"+Environment.DIRECTORY_DCIM+"/"+"albumName"+"/"+"photoName";
        image = BitmapFactory.decodeFile(fileUrl);

    }

    @Override
    protected String doInBackground(String... params) {
        String fileUrl = Environment.getExternalStorageDirectory()+"/"+Environment.DIRECTORY_DCIM+"/"+"albumName"+"/"+"photoName";

        DataOutputStream dos = null;
        String lineEnd = "\r\n";
        String twoHyphens = "--";
        String boundary = "*****";
        HttpURLConnection connection = null;
        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = 1 * 1024 * 1024;
        String response = "Error";



        String urlString = "yourUrlServer";

        try {
            File file = new File(fileUrl);
            FileInputStream fileInputStream = new FileInputStream(file);
            URL url = new URL(urlString);
            connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true); // Allow Inputs
            connection.setDoOutput(true); // Allow Outputs
            connection.setUseCaches(false);
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Connection", "Keep-Alive");
            connection.addRequestProperty("content-type", "multipart/form-data; boundary=" + boundary);


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

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



            Log.d("MediaPlayer", "Headers are written");

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


            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);
            }


            dos.writeBytes(lineEnd);

            dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

            StringBuilder responseSB = new StringBuilder();
            int result = connection.getResponseCode();
            BufferedReader br;
            // 401 - 422 - 403 - 404 - 500
            if (result == 401 || result == 422 || result == 403 || result == 404 || result == 500)
            {
                br = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
            }
            else {
                br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            }
            while ( (JSON_STRING = br.readLine()) != null)
                responseSB.append(JSON_STRING+ "\n");

            Log.d("MediaPlayer","File is written");
            fileInputStream.close();
            dos.flush();
            dos.close();
            br.close();


            response = responseSB.toString().trim();

        } catch (IOException ioe) {
            Log.d("MediaPlayer", "error: " + ioe.getMessage(), ioe);
        }

        return response;

    }


    @Override
    protected void onPostExecute(String result) {
        Log.d("SERVER RESPONSE ->",result)
    }





    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

}
公共静态类requestPostReportPhoto扩展异步任务{
位图图像;
字符串JSON_字符串;
@凌驾
受保护的void onPreExecute(){
String fileUrl=Environment.getExternalStorageDirectory()+“/”+Environment.DIRECTORY\u DCIM+“/”+“albumName”+“/”+“photoName”;
image=BitmapFactory.decodeFile(fileUrl);
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
String fileUrl=Environment.getExternalStorageDirectory()+“/”+Environment.DIRECTORY\u DCIM+“/”+“albumName”+“/”+“photoName”;
DataOutputStream dos=null;
字符串lineEnd=“\r\n”;
字符串双连字符=“--”;
字符串边界=“*******”;
HttpURLConnection=null;
int字节读取,字节可用,缓冲区大小;
字节[]缓冲区;
int maxBufferSize=1*1024*1024;
字符串response=“Error”;
字符串urlString=“yourUrlServer”;
试一试{
File File=新文件(fileUrl);
FileInputStream FileInputStream=新的FileInputStream(文件);
URL=新URL(URL字符串);
connection=(HttpURLConnection)url.openConnection();
connection.setDoInput(true);//允许输入
connection.setDoOutput(true);//允许输出
connection.setUseCaches(false);
connection.setRequestMethod(“POST”);
setRequestProperty(“连接”,“保持活动”);
connection.addRequestProperty(“内容类型”、“多部分/表单数据;边界=“+boundary”);
dos=新的DataOutputStream(connection.getOutputStream());
写字节(两个连字符+边界+行结束);
writeBytes(“内容处理:表单数据;名称=\”文件\“文件名=\”+”PHOTONAME“+”\”+lineEnd);
dos.writeBytes(lineEnd);
Log.d(“MediaPlayer”,“写入标题”);
bytesAvailable=fileInputStream.available();
bufferSize=Math.min(字节可用,maxBufferSize);
buffer=新字节[bufferSize];
bytesRead=fileInputStream.read(缓冲区,0,缓冲区大小);
而(字节读取>0){
写入(缓冲区,0,缓冲区大小);
bytesAvailable=fileInputStream.available();
bufferSize=Math.min(字节可用,maxBufferSize);
bytesRead=fileInputStream.read(缓冲区,0,缓冲区大小);
}
dos.writeBytes(lineEnd);
写字节(两个连字符+边界+两个连字符+行结束);
StringBuilder responseB=新的StringBuilder();
int result=connection.getResponseCode();
缓冲剂;
// 401 - 422 - 403 - 404 - 500
如果(结果==401 | |结果==422 | |结果==403 | |结果==404 | |结果==500)
{
br=新的BufferedReader(新的InputStreamReader(connection.getErrorStream());
}
否则{
br=新的BufferedReader(新的InputStreamReader(connection.getInputStream());
}
而((JSON_STRING=br.readLine())!=null)
append(JSON_字符串+“\n”);
Log.d(“MediaPlayer”,“文件已写入”);
fileInputStream.close();
dos.flush();
dos.close();
br.close();
response=responseb.toString().trim();
}捕获(ioe异常ioe){
Log.d(“MediaPlayer”,“错误:”+ioe.getMessage(),ioe);
}
返回响应;
}
@凌驾
受保护的void onPostExecute(字符串结果){
Log.d(“服务器响应->”,结果)
}
@凌驾
受保护的void onProgressUpdate(void…值){
super.onProgressUpdate(值);
}
}
public static class requestPostReportPhoto extends AsyncTask<String, Void, String> {

    Bitmap image;
    String JSON_STRING;

    @Override
    protected void onPreExecute(){
        String fileUrl = Environment.getExternalStorageDirectory()+"/"+Environment.DIRECTORY_DCIM+"/"+"albumName"+"/"+"photoName";
        image = BitmapFactory.decodeFile(fileUrl);

    }

    @Override
    protected String doInBackground(String... params) {
        String fileUrl = Environment.getExternalStorageDirectory()+"/"+Environment.DIRECTORY_DCIM+"/"+"albumName"+"/"+"photoName";

        DataOutputStream dos = null;
        String lineEnd = "\r\n";
        String twoHyphens = "--";
        String boundary = "*****";
        HttpURLConnection connection = null;
        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = 1 * 1024 * 1024;
        String response = "Error";



        String urlString = "yourUrlServer";

        try {
            File file = new File(fileUrl);
            FileInputStream fileInputStream = new FileInputStream(file);
            URL url = new URL(urlString);
            connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true); // Allow Inputs
            connection.setDoOutput(true); // Allow Outputs
            connection.setUseCaches(false);
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Connection", "Keep-Alive");
            connection.addRequestProperty("content-type", "multipart/form-data; boundary=" + boundary);


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

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



            Log.d("MediaPlayer", "Headers are written");

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


            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);
            }


            dos.writeBytes(lineEnd);

            dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

            StringBuilder responseSB = new StringBuilder();
            int result = connection.getResponseCode();
            BufferedReader br;
            // 401 - 422 - 403 - 404 - 500
            if (result == 401 || result == 422 || result == 403 || result == 404 || result == 500)
            {
                br = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
            }
            else {
                br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            }
            while ( (JSON_STRING = br.readLine()) != null)
                responseSB.append(JSON_STRING+ "\n");

            Log.d("MediaPlayer","File is written");
            fileInputStream.close();
            dos.flush();
            dos.close();
            br.close();


            response = responseSB.toString().trim();

        } catch (IOException ioe) {
            Log.d("MediaPlayer", "error: " + ioe.getMessage(), ioe);
        }

        return response;

    }


    @Override
    protected void onPostExecute(String result) {
        Log.d("SERVER RESPONSE ->",result)
    }





    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

}