File Upload zu PHP mit POST Parametern

  • Antworten:9
Julian S.
  • Forum-Beiträge: 77

01.08.2014, 01:53:30 via Website

Hallo weiß einer ob es möglich ist bei einem file upload noch post parameter hinzuzufügen?

MfG

Antworten
Georg C.
  • Forum-Beiträge: 235

01.08.2014, 07:23:52 via Website

Hallo,
ob ich deine Frage richtig verstehe (???)
Soll an der Server- Seite ein php Script den request empfangen, dann ist es dem auch egal, ob es POST oder GET ist, weil:
$_REQUEST beinhaltet alle Request- Parameter, - also egal ob über POST oder übers GET; -> bzw. beide.

Also JA!

LG
Georg

Sorry für Gramatik & Stilistik Fehler.

Antworten
Julian S.
  • Forum-Beiträge: 77

01.08.2014, 21:59:11 via Website

naja auf php seite ist auch nicht das problem sondern eher auf der seite von java
ich habe nämlich keinen plan wie ich in den anhängenden code das file einbaue als post parameter:

public static String uploadFile(String targetURL, String urlParameters, File file)
{
    URL url;
    HttpURLConnection connection = null;
    try {
        //Create connection
        url = new URL(targetURL);
        connection = (HttpURLConnection)url.openConnection();
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content-Type",
                "application/x-www-form-urlencoded");

        connection.setRequestProperty("Content-Length", "" +
                Integer.toString(urlParameters.getBytes().length));
        connection.setRequestProperty("Content-Language", "en-US");

        connection.setUseCaches (false);
        connection.setDoInput(true);
        connection.setDoOutput(true);

        //Send request
        DataOutputStream wr = new DataOutputStream (
                connection.getOutputStream ());
        wr.writeBytes (urlParameters);
        wr.flush ();
        wr.close ();

        //Get Response
        InputStream is = connection.getInputStream();
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));
        String line;
        StringBuffer response = new StringBuffer();
        while((line = rd.readLine()) != null) {
            response.append(line);
            response.append('\r');
        }
        rd.close();
        return response.toString();

    } catch (Exception e) {

        e.printStackTrace();
        return null;

    } finally {

        if(connection != null) {
            connection.disconnect();
        }
    }
}

Antworten
Georg C.
  • Forum-Beiträge: 235

02.08.2014, 08:22:09 via Website

Hallo,

... wie ich in den anhängenden code das file einbaue als post
parameter ...

Hmmmmm ;
also strikte so, wie du es gemacht hast. (??!!??)
File (ist sogar praktisch) als Parameter der uploadFile(String targetURL, String urlParameters, File file)
Methode,
und
bei request "Typ" die POST gewählt:
connection.setRequestMethod("POST";)
soll irgend wann der Parser hier richtig funktionieren,
dann wird es so aussehen:

connection.setRequestMethod("POST" )
....
OK!
Schaue dir an -> / (analysiere!) ein Tutorials (es gibt sehr viele ... upload File to PHP .. to HTML ...)
Wenn du Java lernen möchtest, wird dir hier bestimmt! weiter geholfen, kurze Teilproblem- Lösungen auch für "Copy/Paste - Leute",
aber ..... keiner bringt dir hier die Grundlagen bei.

LG
Georg

— geändert am 02.08.2014, 08:30:39

Sorry für Gramatik & Stilistik Fehler.

Antworten
Julian S.
  • Forum-Beiträge: 77

02.08.2014, 09:31:53 via Website

Was soll das denn jetzt heißen? Grundlagen hin oder her ich habe einfach keine Ahnung in welchen Format ich das file an die urlParameters anhängen soll. Mir würde ja ein Ansatz reichen! Ich würde hier wohl kaum fragen hätte ich nicht schon sämtliche Beispiel codes im Internet abgeklappert...

— geändert am 02.08.2014, 09:32:35

Antworten
Georg C.
  • Forum-Beiträge: 235

02.08.2014, 10:51:16 via Website

Hallo,
meine "Kristallkugel" sag mir, dass du zu denen gehörst, welcher die Meinung verträten, -> dass Forum MUSS mir / euch -> Helfen.
NO!
Ein kostenlosen Support ist ein Privileg, -> von dem du / ihr auch profitiert.
Also sei bitte (wenigstens offiziell ) etwas freundlicher.
Auf deinen "Barschen Ton" reagiere ich so;

... ich habe nämlich keinen plan wie ich in den anhängenden code das
file einbaue

Dann lasse es, oder zwingt dich jemand dazu?

... Grundlagen hin oder her ich habe einfach keine Ahnung

Das ist nicht zu übersehen.

Mir würde ja ein Ansatz reichen!

Habe beschrieben / erläutern.

Ich würde hier wohl kaum fragen hätte ich nicht schon sämtliche
Beispiel codes im Internet abgeklappert...

Wen die sämtlichen Beispiel- Codes aus dem Internet dir nicht geholfen haben, dann kann ich dir auch nicht weiter helfen
- SORRY!

LG
Georg

Sorry für Gramatik & Stilistik Fehler.

Antworten
Julian S.
  • Forum-Beiträge: 77

02.08.2014, 14:44:43 via Website

Georg C.

meine "Kristallkugel" sag mir, dass du zu denen gehörst, welcher die Meinung verträten, -> dass Forum MUSS mir / euch -> Helfen.
NO!

Nein der Meinung bin ich nicht es stört mich nur ziemlich wenn leute antworten die keine Ahnung haben! Wenn du meinst du müsstest deine Zitate aus dem Zusammenhang reißen um mich so blöd darzustellen dann mach das ruhig wenn es dich glücklich macht.

@Markus B.Danke! ich wollte aber vorerst auf libs verzichten weil es die app größe nur unnötig in die höhe treibt :)

@Ludy Naja mein problem ist ja nicht das uploaden an sich sondern wie man postparameter und den upload in einem an ein php file sendet.
Bei den obrigen code auszug sieht urlParameters ja ca so aus "authkey=test&username=test".
Nun ist halt das problem wie ich das file da dran hänge einfach "&file=".bytes() und halt von file selbst die bytes?

— geändert am 02.08.2014, 14:45:52

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.961

02.08.2014, 14:55:04 via Website

Ich hatte mir mal ne Klasse geschrieben zwecks Authentizierung

    public SendData(String userNameAuthentication,
        String passwordAuthentication, String urlServerUpload,
        String pathAndFile) {
    this.username = userNameAuthentication;
    this.password = passwordAuthentication;
    this.urlServer = urlServerUpload;
    this.pathAndFile = pathAndFile;
    Authenticator.setDefault(new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password
                    .toCharArray());
        }
    });
    sender();
}

private void sender() {
    HttpURLConnection connection = null;
    DataOutputStream outputStream = null;

    String lineEnd = "\r\n";
    String twoHyphens = "--";
    String boundary = "*****";

    int bytesRead, bytesAvailable, bufferSize;
    byte[] buffer;
    int maxBufferSize = 1 * 1024 * 1024;

    try {
        FileInputStream fileInputStream = new FileInputStream(new File(
                pathAndFile));

        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=\""
                        + pathAndFile + "\"" + lineEnd);
        outputStream.writeBytes(lineEnd);

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

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

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

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

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

        Log.e("Code " + serverResponseCode, serverResponseMessage);

        fileInputStream.close();
        outputStream.flush();
        outputStream.close();
    } catch (ProtocolException e) {
        Log.e("Proto", e.toString());
    } catch (IOException e) {
        Log.e("io", e.toString());
    }
}

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Antworten