# Java to php setAsciiStream übertragen



## mäcjava (18. Okt 2011)

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:


```
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.


----------



## mäcjava (18. Okt 2011)

Für alle, die sich auch dafür interessieren: Send Form Data from Java: A Painless Solution


----------



## mäcjava (18. Okt 2011)

Ein Problem habe ich noch: Mit 
	
	
	
	





```
pstmt.setAsciiStream(1, fis, (int) file.length());
```
konnte ich die Datei im ASCII Format in das BLOB Feld der DB laden.

Wenn ich jetzt 
	
	
	
	





```
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?


----------



## mäcjava (18. Okt 2011)

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?


----------



## SlaterB (19. Okt 2011)

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


----------



## mäcjava (19. Okt 2011)

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:


```
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.


----------



## TheDarkRose (19. Okt 2011)

mäcjava hat gesagt.:


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



In der PHP Datei das entsprechend veranlassen?


----------



## HoaX (19. Okt 2011)

Du liest einen Bytestream in einen StringBuffer ein, das kann nicht gut gehen. Benutz lieber einen ArrayOutputStream!


----------

