2010-01-12 74 views
0

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

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

try 
{ 
FileOutputStream fos = new FileOutputStream(strFilePath); 

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

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

+0

从这些信息中无法分辨出来。如果您以正确和损坏的形式上传文件,这可能会告诉我们更多。 – joriki 2011-02-05 13:47:57

+0

如果您收到的字节流没有任何PNG头文件,当然也需要将它们添加到您的文件中。 :) – anroesti 2011-02-05 14:02:55

回答

0

很难在没有看到更多代码的情况下为您提供建议,但如果您所做的只是将数据直接写入文件,那么您最好不要将其存储在字节数组中,并将其直接传输到输出流,如在这个非常简化的示例中:

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

如果没有看到更多的代码,很难给出更具体的建议。

0

也许有一些与文件处理程序discarting hickup。关闭文件流后,可能需要尝试调用垃圾回收器。

Runtime.getRuntime().gc(); 

它帮助我一次在win7上删除文件。

在最后的手段你也可以尝试通过计算md5hash来验证rig数据正在发送,但http不应该丢失数据。