2015-08-20 3 views
-1

Я загружаю изображение с c:\illuxplain на Android-устройство. Я успешно загрузил изображение, но когда я его открываю, он не отображается.Servlet not writing file

Размер изображения не равен нулю в пространстве для хранения и отображает расширение .png. Почему изображение не отображается? Это правильный способ записать файл в пространство для хранения?

Windows Photo Viewer can't open this picture...

Это мой сервлет код

for (Part part : request.getParts()) { 
    String fileName = extractFileName(part); 
    File file = new File(fileSaveDir, fileName); 
    InputStream input = part.getInputStream(); 

    byte[] buffer = new byte[1024]; 
    int len = input.read(); 

    FileOutputStream out = new FileOutputStream(file); 
    while (len!=-1) { 
     out.write(buffer,0,len); 
     len = input.read(buffer); 
    } 
    out.close(); 
    input.close(); 
} 
+0

Обратитесь к http://stackoverflow.com/questions/5882005/how-to-download-image-from-any-web-page-in-java –

ответ

2

Вы используете неправильный read метод в следующей строке:

int len = input.read(); 

Это должно быть:

int len = input.read(buffer); 
+0

Спасибо очень много. Я очень ценю :) – mubeen

+0

Это хороший способ написать на склад? (Код, который у меня есть) – mubeen

+1

Обычно пишут цикл, как показано в ответе sunrise76. –

1

Пример кода:

byte data[] = new byte[1024]; 
long total = 0; 
int count; 


while ((count = input.read(data)) != -1) { 
     total += count; 
     output.write(data, 0, count); 
} 

output.flush(); 
output.close(); 
+0

Также подумайте о том, чтобы сделать ваш буфер данных более крупным - не менее 10 тыс. –