1

我在将 XML 文件从我的 android 应用程序上传到 Web 服务器时遇到问题。我尝试调试,但是当调试到达时,整个 PHP 脚本会打印在 Eclipse LogCat 上:

Log.e("调试", "服务器响应" + str);

我不确定 PHP 脚本是否正确。例如,我不知道是否还必须在 PHP 脚本上添加文件名 (Coords.xml)。我用来在服务器上上传 XML 文件的代码是:

 HttpURLConnection conn = null;
                    DataOutputStream dos = null;
                    DataInputStream inStream = null;
                    String existingFileName = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Coords.xml";
                    String lineEnd = "\r\n";
                    String twoHyphens = "--";
                    String boundary = "*****";
                    int bytesRead, bytesAvailable, bufferSize;
                    byte[] buffer;
                    int maxBufferSize = 1 * 1024 * 1024;
                    String responseFromServer = "";
                    String urlString = "http://MyWebSiteName/php/upload1.php";

                    try {

                        //------------------ CLIENT REQUEST
                        FileInputStream fileInputStream = new FileInputStream(new File(existingFileName));
                        // open a URL connection to the Servlet
                        URL url = new URL(urlString);
                        // Open a HTTP connection to the URL
                        conn = (HttpURLConnection) url.openConnection();
                        // Allow Inputs
                        conn.setDoInput(true);
                        // Allow Outputs
                        conn.setDoOutput(true);
                        // Don't use a cached copy.
                        conn.setUseCaches(false);
                        // Use a post method.
                        conn.setRequestMethod("POST");
                        conn.setRequestProperty("Connection", "Keep-Alive");
                        conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
                        dos = new DataOutputStream(conn.getOutputStream());
                        dos.writeBytes(twoHyphens + boundary + lineEnd);
                        dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + existingFileName + "\"" + 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);
                        // close streams
                        Log.e("Debug", "File is written");
                        fileInputStream.close();
                        dos.flush();
                        dos.close();

                    } catch (MalformedURLException ex) {
                        Log.e("Debug", "error: " + ex.getMessage(), ex);
                    } catch (IOException ioe) {
                        Log.e("Debug", "error: " + ioe.getMessage(), ioe);
                    }

                    //------------------ read the SERVER RESPONSE
                    try {

                        inStream = new DataInputStream(conn.getInputStream());
                        String str;

                        while ((str = inStream.readLine()) != null) {

                            Log.e("Debug", "Server Response " + str);

                        }

                        inStream.close();

                    } catch (IOException ioex) {
                        Log.e("Debug", "error: " + ioex.getMessage(), ioex);


                    }

PHP脚本是:

    < ?php

   $file_path = "/uploads";

   $file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
   if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
       echo "success";
   } else{
       echo "fail";
   }
? >

有什么建议么?提前致谢。

4

0 回答 0