写入文件时发布的图像文件无法查看

时间:2010-01-12 19:17:42

标签: java image http post

我正在将图像文件从iPhone应用程序发送到http Post应用程序。 Post应用程序是一个java restful Web服务,它接受Post请求。我有Post方法接收一个字节数组,然后将其写入这样的文件:

private void writeToFile(byte[] str) {
String strFilePath = "/Users/j/Desktop/joe.png";

try
{
 FileOutputStream fos = new FileOutputStream(strFilePath);

  fos.write(str);
  fos.close(); 
}
}

文件成功写入我的本地磁盘,但是当我尝试打开文件时,它无法查看。我收到一个错误,它无法打开并可能已损坏。有谁知道我为什么看不到这张图片?

2 个答案:

答案 0 :(得分:0)

如果没有看到更多代码,很难给你建议,但如果你所做的只是将数据直接写入文件,你也可以跳过将其存储在字节数组中并直接将其传输到输出流,就像在这个非常简单的例子中一样:

FileOutputStream out = new FileOutputStream( "myfile.jpg" );
InputStream in = request.getInputStream();
while( ( int ch = in.read() ) != -1 ){
    out.write( ch );
}

如果不看更多代码,很难提供更具体的建议。

答案 1 :(得分:0)

对于文件处理程序的丢弃,可能存在某种特殊情况。关闭文件流后,可能值得尝试调用垃圾收集器。

Runtime.getRuntime().gc();

它曾帮助我在win7上播放文件。

最后,您还可以尝试通过计算md5hash来验证是否正在发送rigth数据,但http不应该丢失数据。