1. 程式人生 > >iOS原生api post上傳圖片,上傳視訊

iOS原生api post上傳圖片,上傳視訊

我之前在做檔案上傳的時候,不想用第三方的,於是就寫了一個簡單的圖片上傳方法

------------.h檔案裡面寫一個這樣方法-------

/**

 *  非同步上傳檔案,視訊,圖片

 *

 *  @param name     名字  這個名字是和後臺協定好的關鍵字

 *  @param filename 上傳檔案的名字

 *  @param mimeType 上傳檔案型別

 *  @param data     檔案流資料

 *  @param upurl    上傳路徑

 *  @param params   上傳引數

 *  @param complete block回撥

NSDictionary型別

 */

+(void)upload:(NSString *)name filename:(NSString *)filename mimeType:(NSString *)mimeType data:(NSData *)data upUrl:(NSString *)upurl parmas:(NSDictionary *)params complete:(void(^)(NSDictionary *dict))complete;

------------.m檔案裡面實現這個這樣方法-------

 #define YYEncode(str) [str dataUsingEncoding:NSUTF8StringEncoding]

+(void)upload:(NSString *)name filename:(NSString *)filename mimeType:(NSString*)mimeType data:(NSData *)data upUrl:(NSString *)upurl parmas:(NSDictionary *)params complete:(void(^)(NSDictionary *dict))complete;{

NSLog(@"開始上傳===================");

// 檔案上傳

NSURL *url = [NSURLURLWithString:upurl];

   NSLog(@"地址===========%@%@",upurl,params);

NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];

    request.HTTPMethod =@"POST";

// 設定請求體

NSMutableData *body = [NSMutableDatadata];

/***************檔案引數***************/

// 引數開始的標誌

    [bodyappendData:YYEncode(@"--YY\r\n")];

// name : 指定引數名(必須跟伺服器端保持一致)

// filename : 檔名

NSString *disposition = [NSStringstringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", name, filename];

    [bodyappendData:YYEncode(disposition)];

NSString *type = [NSStringstringWithFormat:@"Content-Type: %@\r\n", mimeType];

    [bodyappendData:YYEncode(type)];

    [bodyappendData:YYEncode(@"\r\n")];

    [bodyappendData:data];

    [bodyappendData:YYEncode(@"\r\n")];

/***************普通引數***************/

    [paramsenumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop) {

// 引數開始的標誌

        [bodyappendData:YYEncode(@"--YY\r\n")];

NSString *disposition = [NSStringstringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n", key];

        [bodyappendData:YYEncode(disposition)];

        [bodyappendData:YYEncode(@"\r\n")];

        [bodyappendData:YYEncode(obj)];

        [bodyappendData:YYEncode(@"\r\n")];

    }];

/***************引數結束***************/

// YY--\r\n

    [bodyappendData:YYEncode(@"--YY--\r\n")];

    request.HTTPBody = body;

// 設定請求頭

// 請求體的長度

    [request setValue:[NSStringstringWithFormat:@"%zd", body.length]forHTTPHeaderField:@"Content-Length"];

//宣告這個POST請求是個檔案上傳

    [request setValue:@"multipart/form-data; boundary=YY"forHTTPHeaderField:@"Content-Type"];

// 傳送請求

    [NSURLConnectionsendAsynchronousRequest:requestqueue:[NSOperationQueuemainQueue]completionHandler:^(NSURLResponse *response,NSData *data,NSError *connectionError) {

       if (data) {

NSDictionary *dict = [NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableLeaveserror:nil];

NSLog(@"-----------------%@", dict);

           NSLog(@"上傳成功");

            complete(dict);

        }else {

           NSLog(@"上傳失敗");

        }

    }];

}

-----------這個方法的使用----------------------

NSMutableDictionary *param = [[NSMutableDictionaryalloc]init];//引數字典

//下面五個是引數,根據實際情況而定

[param setValue:dep forKey:@"description"];

[param setValue:_gpsString forKey:@"addr"];

NSLog(@"gpsstring==========%@",_gpsString);

[param setValue:_circleid forKey:@"circleId"];

[param setValue:userId forKey:@"userId"];

[param setValue:phoneNumber forKey:@"phoneNumber"];

NSString *name=@"userImg";//這個名字和後臺商量好了

NSString *filename=@"images.jpg";//上傳後的名字

NSString *mimeType=@"image/jpeg";//上傳型別

NSString *upurl=[NSString stringWithFormat:@"%@/%@",IP,UPDATA_USER_HEAD_IMG];

//上傳路徑,你們自己的路徑

NSData *data = [NSData dataWithContentsOfFile:fullPath];//data資料流,圖片的路徑

/*

如果是上傳視訊的話

 NSData *data = [NSData dataWithContentsOfFile:fullPath];

 //data資料流fullPath就是儲存視訊的路徑

 NSString *[email protected]"fileVideo";(和後臺保持一致)

 NSString *[email protected]"videos.mp4";

 NSString *[email protected]"video/mp4";//(視訊和圖片的格式有多種,這裡就不舉例了)

 */

//下面是上傳方法

 [Uploadupload:namefilename:filenamemimeType:mimeTypedata:dataupUrl:upurlparmas:paramcomplete:^(NSDictionary *dict) {

if ([[dictobjectForKey:@"status"]isEqualToString:@"0"]) {

           NSLog(@"上傳頭像成功");

           NSString * userImg=[dictobjectForKey:@"userImg"];

            [appDelegate.appDefaultsetObject:userImgforKey:@"imgPath"];

           //建立通知

NSNotification *notification =[NSNotificationnotificationWithName:@"updateHeadImgtongzhi"object:niluserInfo:nil];

           //通過通知中心傳送通知

            [[NSNotificationCenterdefaultCenter]postNotification:notification];

        }

    }];

相關推薦

iOS原生api post圖片視訊

我之前在做檔案上傳的時候,不想用第三方的,於是就寫了一個簡單的圖片上傳方法 ------------.h檔案裡面寫一個這樣方法------- /**  *  非同步上傳檔案,視訊,圖片  *  *  @param name     名字  這個名字是和後臺

使用最原始的http-post方式圖片 工具類已封裝 可直接使用

// 上傳工具類的 .h檔案 #import <Foundation/Foundation.h> @interface IMPhotoPostTool : NSObject + (NSMutableURLRequest *)upload:(NSString *

nodejs express 框架 圖片頭像問題

上傳圖片總結: 必須 安裝’multer’模組 Npm I multer –S(手動輸入小寫) 第一步 App.js 裡面 掛載index路由之前寫入 app.use(express.static(path.join(__dirname, 'public'))); var mul

ueditor 自定義圖片圖片自定義

越來越不想寫部落格了,真的是累!好了,廢話不多說,進入正題。前臺:既然你們都走到這裡來了,那麼前面的就不在多說了,直接進去配置好的頁面。<script type="text/javascript"> var ue = UE.getEditor('editor'

php 中使用cURL發送get/post請求圖片批處理

cit gda 抓取 記錄 rem 學習 網頁 lose XML https://mp.weixin.qq.com/s/8luqMEd8xt8oJxFLLCU1XA 文章正文 cURL是利用url語法規定傳輸文件和數據的工具。php中有curl拓展,一般用來實現網絡抓取,模

iOS整合七牛雲(圖片視訊音訊等檔案)

用的CocoaPods匯入SDK platform :ios,'9.0' target '專案名' do pod 'AFNetworking' pod 'Qiniu' end 匯入標頭檔案 #import<QiniuSDK.h> #i

010-java 表單方式或者base64方式圖片後端使用nutz的post轉發圖片到另一個請求

本地上傳圖片 方式一、使用表單方式上傳-enctype <form enctype="multipart/form-data" method="post" action="http://face.lhx.com/auth" id='formBox' name="form">

使用springmvc 接收圖片在 手機 ios 圖片就不報錯 沒有就報下面這個錯誤然後在pc端跟安卓手機就不會有這個錯誤這是為什麼呢?

七月 18, 2018 4:04:22 下午 org.apache.catalina.core.StandardWrapperValve invoke 嚴重: Servlet.service() for servlet [springMVC] in context with

IOS 利用AFN圖片支援多張、單張

前言:本文主要利用AFN來進行圖片上傳,支援單張、多張; 個人覺得導致上傳失敗的原因,大部分情況下都是由於 [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"upload

使用 CKEditor 圖片 粘貼屏幕截圖

要求 license 回調 wan ade 做成 操作 rms 粘貼 之前寫過wangEditor,那真是好用,文檔也清晰,半天就搞定了,無奈沒有對應license,只好選擇別的。 外語一般,閱讀理解都靠蒙。CKEditor官方文檔看的我雲裏霧裏,國內的博客比較少,

百度WebUploader圖片圖片回顯編輯查看

set 唯一性 original 無需 同名 sch nag fin enum 頁面前端使用的是bootstrap,java後端springMVC , 上傳用的WebUploader,先說說上傳圖片,回顯編輯圖片在下一篇 如果僅僅只需要上傳圖片,不需要回顯進行編輯圖片,使用

html   圖片本頁預覽

html 上傳圖片 本頁預覽 直接上代碼<!DOCTYPE html><html><head><meta charset="UTF-8"><title>圖片上傳預覽</title><script type="text/j

C# 使用FileUpload控件圖片將文件轉換成二進制進行存儲與讀取

擴展 實現 bmi extension aaa 插入數據 問題 pup cat 狀況描述:   需要上傳文件,但是不想要保存到實體路徑下,便可以用該功能來實現。 效果圖:      點擊【Upload】按鈕,上傳文件到數據庫;   點擊【Preview】,預覽文件;

微信jssdk圖片一張一張的 和 一次性好幾張

pla can 參數錯誤 其他 屬性 使用 down pop menu //html模板 <div class="zhaopin_3_2"> <div id="bbb"></div> &

小程序圖片排隊

length 內容 ext 有效 ges mar 顯示 func 沒有 //沒有處理的wxml,但是有效果,可以簡單試驗一下 <view class=‘minbox1‘> <text class=‘red wzgs‘>*</text>

微信小程式圖片視訊及預覽

wxml <!-- 圖片預覽 --> <view class='preview-warp' wx:if="{{urls}}"> <image src='{{urls}}' /> </view> <view class="prew_video"

layer 彈框 cropper 裁剪圖片thinkphp 3 使用 CropAvatar.class.php

最近要做一個上傳裁剪圖片功能,但是網上收出來的東西,知識點都是對的。但是就是沒說清楚,也無法連續起來用。 經過自己整理出來的一套程式碼,親測可用! 不用多說,直接上菜。 PS:搜尋引擎收錄的還是很垃圾...... 呼叫頁面,簡單程式碼(可複用) <img src="{$info.co

layui-圖片可使用選擇圖片->圖片預覽圖片刪除圖片(轉載)

原文地址:https://gitee.com/AMortal/codes/qt8m6zk30u1g4evr95jhx13 <!DOCTYPE html> <html> <head> <meta

利用ajax圖片並使用CURL呼叫介面

這是我第一次使用ajax上傳檔案,並且不通過form表單進行上傳,之前使用ajax上傳檔案時是藉助一個叫form.js的檔案,可以直接使用$.ajaxSumbmit直接提交表單,但這次不同,就是使用ajax上傳,並且將圖片資訊放在ajax要上傳的資料data陣列或物件中,怎麼