1. 程式人生 > >使用AFNetworking進行圖片上傳

使用AFNetworking進行圖片上傳

專案中,我們經常會用到上傳圖片的功能,而目前的上傳圖片分為兩種(我只知道兩種,哈哈哈),一種是以將圖片加密轉成字串的形式,另一種是以檔案流的形式進行上傳。記得去年12月份在網上隨便找了一下,可能是我太low,找了好久沒找到。本來早就想總結一下,可是呢...我吧...懶得看AFNetworking原始碼,就一直擱置了,今天工作做完了,正好分享一下。

第一種方式:檔案流方式進行上傳

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    //接收型別不一致請替換一致text/html或別的
    manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObjects:@"application/json",
                                                         @"text/html",
                                                         @"image/jpeg",
                                                         @"image/png",
                                                         @"application/octet-stream",
                                                         @"text/json",
                                                         nil];
        
    NSURLSessionDataTask *task = [managerPOST:urlparameters:nilconstructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
        
        NSData *imageData =UIImageJPEGRepresentation(image,1);
        
        NSDateFormatter *formatter = [[NSDateFormatteralloc]init];
        formatter.dateFormat 
[email protected]
"yyyyMMddHHmmss"; NSString *str = [formatterstringFromDate:[NSDatedate]]; NSString *fileName = [NSStringstringWithFormat:@"%@.jpg", str]; //上傳的引數(上傳圖片,以檔案流的格式) [formData appendPartWithFileData:imageData name:@"file" fileName:fileName mimeType:@"image/jpeg"]; } progress:^(NSProgress *_Nonnull uploadProgress) { //列印下上傳進度 } success:^(NSURLSessionDataTask *_Nonnull task,id _Nullable responseObject) { //上傳成功 } failure:^(NSURLSessionDataTask *_Nullable task, NSError *_Nonnull error) { //上傳失敗 }];

第二種方式:將image轉成NSData,在進行base64加密,此處程式碼是借鑑朋友部落格中寫的,就是一個加密過程,不一定非要這麼寫,只要將image物件傳承NSData型別,然後在進行base64加密就可以了。將此處得到的返回值NSString,作為入參傳入請求地址就可以了
+ (NSString *)imageBase64WithDataURL:(UIImage *)image
{
    NSData *imageData =nil;
    NSString *mimeType =nil;
    
    //圖片要壓縮的比例,此處100根據需求,自行設定
    CGFloat x =100 / image.size.height;
    if (x >1)
    {
        x = 1.0;
    }
    imageData = UIImageJPEGRepresentation(image, x);
    mimeType = @"image/jpeg";
    return [NSStringstringWithFormat:@"data:%@;base64,%@", mimeType,
            [imageData base64EncodedStringWithOptions:0]];
}




相關推薦

使用AFNetworking進行圖片

專案中,我們經常會用到上傳圖片的功能,而目前的上傳圖片分為兩種(我只知道兩種,哈哈哈),一種是以將圖片加密轉成字串的形式,另一種是以檔案流的形式進行上傳。記得去年12月份在網上隨便找了一下,可能是我太low,找了好久沒找到。本來早就想總結一下,可是呢...我吧...懶得看A

前後端分離的情況下進行圖片

這個需求本質上和沒有分離的時候沒啥區別,在Vue前端的寫法,可以參考:Vue+SpringBoot實現前後端分離的檔案上傳 我在寫的時候 封裝axios, iview-admin的寫法 import axios from 'axios' class HttpRequest { c

阿里雲OSS進行圖片

   private static String FOLDER="upload/";            /**     * 獲取阿里雲OSS客戶端物件     * @return     */    public static OSSClient getOSSClient(){     return ne

vue利用fileReader進行圖片

之前在使用vue和iview寫專案的時候本想利用iview自帶的action進行圖片上傳功能,可是試了很多次都不行。因為iview是利用fromdata實現圖片上傳,所以後來就自己利用filereader來進行嘗試,結果成功了,當然這是一種bease64的檔案流上傳方式,需要後臺配合完成。要

精簡Servlet3.0進行圖片

上傳檔案的方法就哪幾種,但總感覺麻煩一點也不精簡,就struts2的方法稍好一點。 下面的方法在之前寫的Servlet3.0方法之上進行再次精簡,應該是最易懂易用的,但是普通表單域是不能通過req.getParameter來獲得(因為二進位制流解析),來看看吧~ 1.u

Vue2.0 引用 exif.js 實現調用攝像頭進行拍照功能以及圖片功能

[0 complete num else imp ada blob can isf vue組件代碼 <template> <div> <div style="padding:20px;"> <div cla

OC 簡單封裝AFNetworking實現get、post、圖片

1.將AFNetworking框架匯入到專案中,地址如下:AFNetworking 2.建立管理類RequestManager: @interface RequestManager : NSObject + (instancetype)shareManager;

使用base64進行移動端圖片

之前搞微信上的圖片上傳,想直接通過介面上傳到自己的圖片伺服器,發現移動端瀏覽器上挺多坑的,使用最簡單的form-data形式好像不成。研究了一下,發現base64格式通用性較強。 base64編碼 base64是一種使用可列印字元來描述二進位制資料的方法

七牛 使用php-sdk 進行圖片

由於不太精通php,歷時兩週的時間才把這個七牛php上傳圖片的demo做出來,在此記錄一下,直接上程式碼吧 前端程式碼: <!DOCTYPE html> <html> <head>     <title>上傳<

使用swfUpload進行批量圖片

uploadInput頁面: <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <% String path = request.getContextPath();

iOS檔案或base64(圖片)之AFNetworking 3.0+檔案圖片

1. base64 上傳圖片 /**  *  上傳圖片到伺服器  *  *  @param image  *  @param photoID  *  @param photoType  */ - (

Vue2.0實現呼叫攝像頭進行拍照功能以及圖片功能引用exif.js

(function() { var debug = false; var root = this; var EXIF = function(obj) { if (obj instanceof EXIF) return obj; if (!(this instanceof EXIF

iOS 調取本地相簿/相機,剪裁圖片進行頭像

開啟本地相簿或開啟本地相機拍照,獲取圖片裁剪圖片,上傳圖片 加入標頭檔案 #import <MobileCoreServices/MobileCoreServices.h> #import <AVFoundation/AVFoundat

微信公眾號開發的時候,進行多張手機相簿圖片時候只第一張其他圖片解決方案

微信端的這個方法在使用的在你進行迴圈呼叫的時候他只接受第一張圖片,其他圖片就沒有了所以解決的方法就是一串串執行而不是並行 wx.uploadImage({ localId: '', // 需要上傳的圖片的本地ID,由chooseImage介面獲得 isSh

iOS 使用AFNetworking實現多張圖片

#import "AFNetworking.h" /**  *  上傳帶圖片的內容,允許多張圖片上傳(URL)POST  *  *  @param url          傳url  

iOS AFNetworking 圖片(修改使用者頭像功能)

今天在處理APP中使用者資訊這裡,遇到了上傳與使用者修改頭像的問題,在網上查閱一些資料之後完成了,寫了一下。貼上來供大家看看。 可以看到 在點選上部ImageView 的時候呼叫相簿去選擇某張圖片。 下面貼出點選圖片後代碼: #pragma mar

TP框架配合jquery進行3種方式的多圖片

用的TP5.1框架+jquery 一 使用form表單方式進行多圖片上傳 html程式碼: <form action="../admin/admin/cs" enctype="multipart/form-data" method="post"> <input type="

幾乎考慮到了每個細節的php圖片

time itl wid cas fault ima ini文件 put val <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <?php /**

修改Ueditor的圖片地址

默認 baidu rfi insert order editor compress 圖片 時間 文件地址:ueditro/php/config.json /* 前後端通信相關的配置,註釋只允許使用多行方式 */ { /* 上傳圖片配置項 */ "image

自己引入jar包實現的圖片

one msg 相對路徑 art nts eof multi tac quest 這個圖片上傳主要實現用戶實名認證,截取字符串有點繁瑣,有任何建議,歡迎評論提出。 1.首先引入一個jar包 org.springframework.web.multipart; 2.開始上