[java + php] Meerdere bestanden uploaden java class

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 19-09 13:37
Beste Tweakers,

Er zijn al vele topics over dit onderwerp geweest maar na enkele posts hebben ze nog nooit een echte oplossing geboden.

Ik ben bezig een java class te programmeren welke het mogelijk maakt om client side foto's te verkleinen en meerdere bestanden te uploaden in een webbrowser. Hierbij moet het dan mogelijk zijn om met een file browser een map of meerdere bestanden te selecteren en deze dan en een keer te uploaden. Er zijn legio aan classes van dit op internet, maar ik wil er graag zelf een maken om er zo veel mogelijk van te leren en om het later nog uit te breiden. Later worden deze bestanden doorgestuurd naar een php script.

Ik weet dat je hiervoor ook een certificaat moet aanmaken op de webserver. Maar zover ik mijn onderzoek goed gedaan heb is dit de meest gemakkelijke manier om deze dingen aan te bieden aan een gebruiker. Het enige alternatief wat ik nog gehoord heb is Java Webstart, maar dit is me verder niet bekend.

De eisen zijn dus:
Moet werken in een browser
Moet client side plaatjes verkleinen
Moet gemakkelijk zijn voor gebruikers

Helaas is het me nog niet gelukt. Het enige wat enigszins in de buurt
komt van wat ik zoek als voorbeeld is dit:
http://forum.java.sun.com...hreadID=559696&tstart=270

Dit is waar ik naar toe wil werken met als uitbreiding het verkleinen en roteren van foto's
http://jupload.biz/en_11.html

Ik heb jupload ook al gedecompiled om te kijken hoe het een en het ander in elkaar steekt maar veel wijzer word ik er niet van.

Wie kan mij wijzen in de goede richting met eventueel kleine voorbeeldjes zodat ik zezlf het geheel kan opbouwen met mijn eigen wensen.

Erik

Acties:
  • 0 Henk 'm!

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Voor het verkleinen, rotereren etc van een foto verwijs ik je naar de Java2D api.

Voor het maken van HTTPConnecties en het versturen van Bytes over die connecties heb je:
java.io.*, en java.net.* nodig.

Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 19-09 13:37
Ok ik ben nu zo ver dat ik met deze code bestanden kan uploaden naar de webserver. Ik heb geprobeerd om deze code apart onder een knop te plaatsen zodat het uploaden begint. Alleen wil hij dan niet meer mijn eigen file en listbox gebruiken om de bestanden te uploaden

Heeft iemand toevallig ook nog een goede tip voor het verkleinen van de foto's ? Dan denk ik dat ik de meest ingewikkelde elementen wel heb voor mijn programma.


Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import java.net.*;
import java.io.*;
public class srvHead implements Runnable{
    String c = "";
    public srvHead(){
        new Thread(this).start();
    }
    public void run(){
        try{
            // run this as an application first, when it works than make an applet of it
            URL u = new URL("http://yourserver/yourpage.php");
            URLConnection c = u.openConnection();
            // post multipart data
            c.setDoOutput(true);
            c.setDoInput(true);
            c.setUseCaches(false);
            // set some request headers
            c.setRequestProperty("Connection", "Keep-Alive");
            // TODO: get codebase of the this (the applet) to use for referer
            c.setRequestProperty("HTTP_REFERER", "http://applet.getcodebase");
            c.setRequestProperty("Content-Type", "multipart/form-data; boundary=****4353");
            DataOutputStream dstream = new DataOutputStream(c.getOutputStream());
            // TODO: nex    t line sends form data like a text input, to send binary data I have too look in to the request protocol for multipart form data
            // TODO: when sending a file a FileInputStream needs to be opened (Jfilechooser ?)
            dstream.writeBytes("--****4353\r\nContent-Disposition: form-data; name=\"uniqueURL\"\r\n\r\n1086774178716\r\n--****4353--\r\n\r\n");
            dstream.flush();
            dstream.close();
            // reading all the header fields of the response
            try{
                int i = c.getHeaderFields().size()-1;
                while(i>-1){
                    try{
                        System.out.print(c.getHeaderFieldKey(i));
                        System.out.print("=");
                        System.out.println(c.getHeaderField(i));
                    }catch(Exception e){
                    }
                    i--;
                }
            }catch(Exception e){
            }
            try{
                DataInputStream in =
                    new DataInputStream(
                        new BufferedInputStream(c.getInputStream()));
                String sIn = in.readLine();
                boolean b = true;
                // TODO: this will loop forever unless you make sure your server page
                // sends a last line like "I am done"
                // than you can do wile(sIn.compareTo("I am done")!=0){
                while(b){
                    if(sIn!=null){
                        System.out.println(sIn);
                    }
                    sIn = in.readLine();
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
            new srvHead();
    }
}

Acties:
  • 0 Henk 'm!

Verwijderd

Kijk eens in de API

De AWT Image klasse heeft hiervoor standaard de method getScaledInstance.