将图像上传到android中的服务器

问题描述

我的应用程序正在尝试通过PHP服务器发送图像。问题是PHP程序员说应该将其作为数据发送。以下是我当前正在使用的代码,请帮助我将图像转换为数据并从服务器获得响应。
InputStream is;
    private int serverResponseCode;
    private String serverResponseMessage;
    @Override
    public void onCreate(Bundle icicle) 
    {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        HttpURLConnection connection = null;
        DataOutputStream outputStream = null;
        DataInputStream inputStream = null;

        String pathToOurFile = \"/sdcard/siva.PNG\";
        Log.e(\"pathToOurFile\",\"\"+pathToOurFile);

        String urlServer = \"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/upload.php\";
        String lineEnd = \"\\r\\n\";
        String twoHyphens = \"--\";
        String boundary =  \"*****\";
        Log.e(\"URL Server\",\"\"+urlServer);

        int bytesRead,bytesAvailable,bufferSize;
        byte[] buffer;
        int maxBufferSize = 1*1024*1024;
        Log.e(\"maxBufferSize\",\"\"+maxBufferSize);

        try
        {
            FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile) );
            Log.e(\"FIS\",\"\"+fileInputStream);
            URL url = new URL(urlServer);
            connection = (HttpURLConnection) url.openConnection();

    //  Allow Inputs & Outputs
            connection.setDoInput(true);
            connection.setDoOutput(true);
            connection.setUseCaches(false);

            // Enable POST method
            connection.setRequestMethod(\"POST\");

            connection.setRequestProperty(\"Connection\",\"Keep-Alive\");
            connection.setRequestProperty(\"Content-Type\",\"multipart/form-data;boundary=\"+boundary);

            outputStream = new DataOutputStream( connection.getOutputStream() );
            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
            outputStream.writeBytes(\"Content-Disposition: form-data; name=\\\"uploadedfile\\\";filename=\\\"\" + pathToOurFile +\"\\\"\" + lineEnd);
            outputStream.writeBytes(lineEnd);

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

            // Read file
            bytesRead = fileInputStream.read(buffer,bufferSize);

            while (bytesRead > 0)
            {
                outputStream.write(buffer,bufferSize);
                bytesAvailable = fileInputStream.available();
                bufferSize = Math.min(bytesAvailable,maxBufferSize);
                bytesRead = fileInputStream.read(buffer,bufferSize);
            }

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

            // Responses from the server (code and message)
            Log.e(\"con\",String.valueOf(connection.getDoOutput()));

            serverResponseCode = connection.getResponseCode();
            serverResponseMessage = connection.getResponseMessage();
            Log.e(\"response\",\"\"+serverResponseCode);
            Log.e(\"serverResponseMessage\",\"\"+serverResponseMessage);

            fileInputStream.close();
            outputStream.flush();
            outputStream.close();
        }
        catch (Exception ex)
        {
            Log.e(\"Exception Handling\",\"\"+ex);
        }
      }
    

解决方法

最后我找到了答案,我犯了一个小错误....在上面的代码中,我仅更改了以下一行中的一个单词 outputStream.writeBytes(\“ Content-Disposition:form-data; name = \\\” uploadedfile \\\“; filename = \\\” \“ + pathToOurFile + \” \\\“ \” + lineEnd); 在上面的行中,主要部分是单词“ uploadedfile”。这个词必须由php程序员指定,否则我们将发送的文件将不会被替换。 请参考这里     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...