Upload-Datei-und image-php-server in android

Ich verwende den folgenden code in den java-upload Bild in php-server über das Netz.

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.util.Log;

public class UploadFiles {

    public void upload(String selectedPath) throws IOException {
        HttpURLConnection conn = null;
        DataOutputStream dos = null;
        DataInputStream inStream = null;
        String lineEnd = "\r\n";
        String twoHyphens = "--";
        String boundary = "AaB03x87yxdkjnxvi7";
        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = 1 * 1024 * 1024;
        String urlString = "http://android.1mohammadi.ir/nightly/upload_files.php";
        try {
            //------------------ CLIENT REQUEST
            FileInputStream fileInputStream = new FileInputStream(new File(
                    selectedPath));
            //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("ENCTYPE", "multipart/form-data");
            conn.setRequestProperty("Content-Type",
                    "multipart/form-data;boundary=" + boundary);
            conn.setRequestProperty("uploaded_file", selectedPath);
            dos = new DataOutputStream(conn.getOutputStream());

            dos.writeBytes(twoHyphens + boundary + lineEnd);
            dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""
                    + selectedPath + "\"" + lineEnd);
            dos.writeBytes(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 <span id="IL_AD4" class="IL_AD">write</span> 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 <span id="IL_AD3" class="IL_AD">streams</span>
            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);
        }
    }
}

Und in php-server verwenden :

<?php
//Where the file is going to be placed
$target_path = "/uploads/";

/* Add the original filename to our target path.
Result is "uploads/filename.<span id="IL_AD5" class="IL_AD">extension</span>" */
$target_path = $target_path . basename($_FILES['uploadedfile']['name']);

error_log("Upload File >>" . $target_path . "\r\n", 3, "Log.log");

if (move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file " . basename($_FILES['uploadedfile']['name']) .
        " has been uploaded";
} else {
    echo "There was an error uploading the file, please try again!";
    echo "filename: " . basename($_FILES['uploadedfile']['name']);
    echo "target_path: " . $target_path;
}
?>

in android code nicht erfolgt, Fehler, und im php-code auch. beim hochladen der Datei kann nicht verschoben werden-Datei. Wie kann ich dieses problem beheben?
danke.

  • haben Sie überprüfen, ob der upload sogar gelungen, auf der php Seite? Die ['error'] parameter in $_FILES sollte IMMER überprüft werden.
  • Kein Fehler accurded.
  • Ich benutze error_log("Upload File >>" .basename($_FILES['uploadedfile']['name']) . " \r\n", 3, "Log.log"); - und Ausgabe: Upload File >>uploads/ Upload File >>
  • das bedeutet, es gibt kein Dateiname zur Verfügung gestellt. die ['name'] leer ist.
  • Ich benutze diesen code von reecon.wordpress.com/2010/04/25/... und das problem ist gelöst
InformationsquelleAutor Hajitsu | 2012-11-29
Schreibe einen Kommentar