Java to php setAsciiStream übertragen

mäcjava

Bekanntes Mitglied
Java -erzeugt> AsciiStream -sendet an> php -trägt ein> mysql DB

Hallo,

ich habe mir eine php-Schnitstelle programmiert, damit ich Daten(kurze Strings) aus der mysql DB meines Webservers abrufen(oder senden kann) kann.

Dabei habe ich dieses Script verwendet:Developer's Guide - Wie man aus Java mit einem PHP-Script kommuniziert

In meinem Programm kann ich beispielsweise eine pdf Datei erstellen und dann wird diese in der DB gespeichert. Lokal habe ich das direkt über jdbc gemacht:

Java:
          File file = new File(file_string);
          fis = new FileInputStream(file);
          pstmt = (PreparedStatement) con.prepareStatement("insert into files(a,b,c,d,e) values (?,?,?,?,?)");
          pstmt.setAsciiStream(1, fis, (int) file.length());
Im Netzt will ich aber kein jdbc in Java direkt verwenden(Webserver/ mysql extern erreichbar usw.).

Ich möchte nun die php Schnittstelle nutzen, um den AsciiStream() hochzuladen.

Hat jemand eine Idee wie man das machen könnte? Ich denke als einfache Variable im url String
wird das nicht funktionieren, dass ist ja bei einem "html Formular Upload" auch so.
 
Ein Problem habe ich noch: Mit
Java:
    pstmt.setAsciiStream(1, fis, (int) file.length());
konnte ich die Datei im ASCII Format in das BLOB Feld der DB laden.

Wenn ich jetzt
Java:
ClientHttpRequest uploadData = new ClientHttpRequest("http://localhost/curl/contest.php");	

    	
    	FileInputStream fis = null;
        File file = new File(file_string);
        fis = new FileInputStream(file);
        
    	uploadData.setParameter("data", fis);
      uploadData.post();
in meine DB hochlade, dann stimmt das FileFormat nicht mehr, da es ja auch im ASCII Format hochgeladen werden sollte.

Kann ich file ins ASCII Format umwandeln, damit die Datei auch richtig in die DB einegtragen wird?
 
ich habe mir fis mal ausgeben lassen und da steht nur: java.io.FileInputStream@14a55f2 drin

Irgendwie muss man eine Datei doch einlesen können und dann ins Binärformat bringen können, sodass sie in ein BLOB passt?
 
wie du mit einem FileInputStream umzugehen hast ist ein Standard-Thema zum Lernen,
die Daten kannst du einlesen und irgendwie auf richtige Weise weiterreichen, richtig,

am besten on the fly, also es als Stream belassen und nur beim read() direkt bearbeiten,
: Class AsciiStream
gibts aber wohl nicht Standard-API und ob es das richtige ist?

eine richtige Definition habe ich noch nicht gefunden,
im Zweifel Beispieldaten anschauen, was genau ist zu verändern an den Daten, vielleicht nur wenige Schritte,
und diese dann selber implementieren
 
Danke für die Hilfe. Dank deinem Hinweis bin ich etwas weiter gekommen:

Ich lese die Datei jetzt ein und erhalte aber leider immer noch nicht die Datei im Binärcodierung:

Java:
  File file = new File(file_string);
     
        int ch;
        StringBuffer strContent = new StringBuffer("");
        FileInputStream fin = null;
         
        try
        {

        fin = new FileInputStream(file);
         
         
        while( (ch = fin.read()) != -1)
        strContent.append((char)ch);
         

        fin.close();
         
        }
        catch(FileNotFoundException e)
        {
        System.out.println("File " + file.getAbsolutePath() +
        " could not be found on filesystem");
        }
        catch(IOException ioe)
        {
        System.out.println("Exception while reading the file" + ioe);
        }
         
        System.out.println("File contents :");
        System.out.println(strContent);
        

       dataupload.setParameter("data", strContent );

Was muss ich jetzt noch ändern, dass ich mein File endlich so hinbekomme, dass es richtig ins Blob gespeichert wird.
 

Neue Themen


Zurück
Oben