iOS開(kāi)發(fā)-Alamofire上傳AWS圖片

Alamofire的強(qiáng)大應(yīng)該不用多說(shuō)了,每個(gè)做iOS開(kāi)發(fā)的應(yīng)該都聽(tīng)過(guò)他的大名。

之前我一直混在OC之中,最近開(kāi)始寫Swift,新建了一個(gè)項(xiàng)目,準(zhǔn)備搭建網(wǎng)絡(luò)層的框架,Alamofire已經(jīng)幫我們封裝好了所有的東西,也匹配的基本上全部的case。

開(kāi)開(kāi)心心搭建好底部請(qǐng)求層,開(kāi)始寫業(yè)務(wù)代碼的時(shí)候發(fā)現(xiàn),我們這邊的圖片上傳策略是將圖片上傳到Amazon的AWS服務(wù)器。然后要求使用PUT方法帶入Content-Type = application/octet-stream。

我之前是直接使用Alamofire給封裝好的Upload方法:

/// Creates an `UploadRequest` using the default `SessionManager` from the specified `url`, `method` and `headers`
/// for uploading the `data`.
///
/// - parameter data:    The data to upload.
/// - parameter url:     The URL.
/// - parameter method:  The HTTP method. `.post` by default.
/// - parameter headers: The HTTP headers. `nil` by default.
///
/// - returns: The created `UploadRequest`.
@discardableResult
public func upload(
    _ data: Data,
    to url: URLConvertible,
    method: HTTPMethod = .post,
    headers: HTTPHeaders? = nil)
    -> UploadRequest
{
    return SessionManager.default.upload(data, to: url, method: method, headers: headers)
}

請(qǐng)求了之后發(fā)現(xiàn)每次都是返回403.

后邊看了一下庫(kù)里的代碼,發(fā)現(xiàn)直接建立一個(gè)Request可能行得通,所以我后來(lái)直接創(chuàng)建了一個(gè)Request通過(guò)Alamofire來(lái)請(qǐng)求。

        var request = URLRequest(url: URL(string: url)!)
        request.httpMethod = HTTPMethod.put.rawValue
        request.setValue(“application/octet-stream”, forHTTPHeaderField: “Content-Type”)
        request.httpBody = data

        Alamofire.request(request).response { (afResponse) in
            
            print(afResponse);
        }

看到果然成功了。

不過(guò)這樣做也失去了upload中帶的一些特性,包括進(jìn)度、續(xù)傳等等。

這篇文章僅限自己學(xué)習(xí),最近剛開(kāi)始寫swift,對(duì)swift的一些特性和Alamofire的使用還不太熟悉。不知道有沒(méi)有更好的解決辦法。如果有別的方法希望有大佬指正。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容