Как загрузить изображение с некоторыми параметрами - PullRequest
1 голос
/ 25 декабря 2009

Как загрузить изображение с некоторыми параметрами. Сервер имеет один веб-сервис, который имеет некоторые учетные данные и загружает изображение и записывает параметры в файл журнала. Я пишу код, но не получаю

На стороне сервера один. html-файл, вызывающий в url, и этот .html-файл, вызывающий один скрипт, написанный на .php, и этот php принимает некоторые параметры и загружает изображение.

Пожалуйста, скажите мне, как я могу сделать с моим кодом ежевики на стороне клинета.

Код клиента (в Java): -

   private final String CrLf = "\r\n";
   private String httpConn(String file){
   HttpConnection conn = null;
   OutputStream os = null;
   InputStream is = null;

   String url = "";
   String result="test";

   url="http://www.test.com/demo.html";      

    try{

        String login = "usertest:passtest";
        //Encode the login information in Base64 format.
        byte[] encoded = Base64OutputStream.encode(login.getBytes(), 0, login.length(), false, false);


        conn = (HttpConnection)Connector.open(url);
        conn.setRequestMethod(HttpConnection.POST);


        String postData = "";

        String name="file:///" + file;
        FileConnection fc= (FileConnection)Connector.open(name);
           is=fc.openInputStream();


         byte[] ReimgData = IOUtilities.streamToBytes(is);

        //Resize Image according to setting.
        byte[] imgData= reszieImage(ReimgData);
        is.read(imgData);


        String message1 = "";
        message1 += "-----------------------------4664151417711" + CrLf;
        message1 += "Content-Disposition: form-data; name=\"image\"; filename=\"" + bef.getText() + "\"" + CrLf;

        message1 += "Content-Type: image/jpeg" + CrLf;
        message1 += CrLf;

        // the image is sent between the messages in the multipart message.

        String message2 = "";
        message2 += CrLf + "-----------------------------4664151417711--" + CrLf;          


        URLEncodedPostData _postData = new URLEncodedPostData("",false);
           _postData.append("filename","test.jpg");
           _postData.append("tag","tag");
           _postData.append("status","st");
           _postData.append("deviceid","di");
           _postData.append("devicemodel","dm");
          // _postData.append("image",new String(imgData));

           String encodedData = _postData.toString();

        conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=---------------------------4664151417711");

        // might not need to specify the content-length when sending chunked data.
         conn.setRequestProperty("Content-Length", String.valueOf((message1.length() + message2.length() + imgData.length )));
         conn.setRequestProperty("Authorization", "Basic " + new String(encoded));
       // System.out.println("open os");
        os = conn.openOutputStream();

        os.write(message1.getBytes());

        // SEND THE IMAGE
        int index = 0;
        int size = 1024;
        do{
            System.out.println("write:" + index);
            if((index+size)>imgData.length){
                size = imgData.length - index;
            }
            os.write(imgData, index, size);
            index+=size;
        }while(index<imgData.length);


        os.write(message2.getBytes());
       // os.write(_postData.getBytes());
        os.flush();


        //Response from webservice..
        is = conn.openInputStream();



       char buff = 512;
        int len;
        byte []data = new byte[buff];
        do{
           // System.out.println("READ");
            len = is.read(data);

            if(len > 0){
               result="1"+Integer.toString(len);
            }
        }while(len>0);
        result="2"+Integer.toString(len);


    }catch(Exception e){
        e.printStackTrace();
    }finally{
        //System.out.println("Close connection");
        try{
            os.close();
        }catch(Exception e){}
        try{
            is.close();
        }catch(Exception e){}
        try{
            conn.close();           
        }catch(Exception e){}
    }
    return result;
}

Код сервера: -

HTML код: -

<html>
<title>Image Upload App Test</title>

<body>
    <h2>Image Upload</h2>
<form id="image_upload" enctype="multipart/form-data" action="http://sys7/brij/test.php" method="post" class="browse">
    <p>
        <label>Upload:</label>
        <input id="multifile" type="file" name="image" />
        <input name="filename" type="text" value="" size="50" maxlength="128" />

        <input name="tag" type="text" value="" size="50" maxlength="128" />
        <input name="deviceid" type="text" value="" size="50" maxlength="128" />
        <input name="devicemodel" type="text" value="" size="50" maxlength="128" />

        <input class="button" type="submit" name="image_upload" value="Upload" />
    </p>
</form>  

</body>
</html>

Код PHP: -

<?php

$filename = $_POST['filename'];
$tag = $_POST['tag'];
$status = $_POST['status'];
$deviceid = $_POST['deviceid'];
$devicemodel = $_POST['devicemodel'];

$fp=fopen('./test/log.txt','w');
fwrite($fp,$filename,strlen($filename));
fwrite($fp,$tag ,strlen($tag ));
fwrite($fp,$deviceid ,strlen($deviceid));
fwrite($fp,$devicemodel ,strlen($devicemodel));
fwrite($fp,$status ,strlen($status));
fclose($fp);


$uploaddir = './test/';
$file = basename($_FILES['image']['name']);
$uploadfile = $uploaddir . $file;

if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) {
        echo "http://iphone.zcentric.com/uploads/{$file}";


}

?>

Спасибо

Панкай Парик

1 Ответ

2 голосов
/ 29 декабря 2009
...