2010-01-12 72 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不應該丟失數據。