具體報錯如下:
Error: Error Domain=NSCocoaErrorDomain Code=257 "未能打開文件“IMG_0040.mp4”,因為您沒有查看它的權限。" UserInfo={NSFilePath=/var/mobile/Media/DCIM/100APPLE/IMG_0040.mp4, NSUnderlyingError=0x2802bf990 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}} Optional(["NSFilePath": /var/mobile/Media/DCIM/100APPLE/IMG_0040.mp4, "NSUnderlyingError": Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"]) 未能打開文件“IMG_0040.mp4”,因為您沒有查看它的權限。
正常情況下 IOS是不能直接通過路徑地址去訪問相冊里面的內容的(小生以前沒注意),直到發現如下一種case:
正常情況下通過PhAsset 獲取到相冊的Assert 然后通過轉換成AVURLAsset 可以得到URL,然后得到地址,這個時候通過這個地址是可以正常訪問文件的,恰好我有個上傳服務器的需求,模擬突然中斷后,后續繼續上傳的場景,當我通過殺掉APP,然后重新打開上傳這個資源是,就報出了如上的錯誤,奇怪的是視頻播放通過這個地址去實例化URL的資源,視頻能夠正常播放,就是自己用FileManage 去獲取這個文件的信息就報錯了。各種調試 比對路徑,確認沒問題后就翻牆google,一樣沒有找到原因,后來無意中記起不能通過路徑去反問相冊,但是之前明明用的好好的。這時候才意識到,會不會只要我調用了獲取相冊的接口,就可以通過路徑來訪問了。馬上測試了一下,果然,我就只打開以前的選擇圖像的界面,不選擇任何資源,關掉頁面重新回來上傳,這個時候就可以正常通過路徑來訪問這個文件並上傳了。
記下讓其他一樣被困擾的猿們能解決自己的困擾,還是我使用的方式不對,得到相冊資源后就應該保存到沙盒中。
