0

サーバー側のアプリケーションにJavaを使用し、クライアント側にphonegapを使用しています。ユーザーがアプリケーションにログインするときに、巨大な画像ファイルを転送する必要があります。

これらの画像ファイルをbase64形式に変換し、jsonオブジェクトに入れます。このjsonオブジェクトをクライアント側に送信すると、Javaのメモリ不足エラーが発生します。

一度にすべてのファイルを送信すると、エラーが発生したJavaメモリが発生するため、これらの画像ファイルを1つのリクエストで1つずつ送信する方法。plは私を助けてくれます。

これが私のコードです:

File folderName = new File(processingFolder+"/"+f1[i].getName());
File[] folderFiles= folderName.listFiles();

for(int m=0;m<folderFiles.length;m++)
{
 System.out.println("folderFiles are:"+folderFiles[m]);
 String s1 = new String();
 File readfile = new File(folderFiles[m].toString());
 System.out.println(readfile.exists() + "!!");

 FileInputStream fis = new FileInputStream(readfile);
 ByteArrayOutputStream bos = new ByteArrayOutputStream();

 byte[] buf = new byte[1024];
 try {
     for (int readNum; (readNum = fis.read(buf)) != -1;) {
         bos.write(buf, 0, readNum); 
         //no doubt here is 0
         /*Writes len bytes from the specified byte array starting at offset 
         off to this byte array output stream.*/
     }
 }


 catch (IOException ex) {
 }
 byte[] bytes = bos.toByteArray();

 String result2 = Base64.encode( bytes );
 json1.put(folderFiles[m].getName(), result2);
4

1 に答える 1

0

私は私の質問の解決策を見つけました。
すべてのファイル名をjson形式でクライアント側に送信しました。クライアント側でファイル名をループすることにより、サーバーにリクエストを送信し、リクエストごとに1つのファイルを取得します。次に、クライアント側でそのファイルを再度書き込みます。

于 2012-06-06T05:15:17.460 に答える