【iOS】AFN多張圖片上傳及PHP端接收

今天翻了翻原來的項目,突然發現之前自己寫多圖上傳那部分有些亂,整理了一下,寫篇博文記錄一下,順便驗證一下最近自己寫PHP代碼的接收圖片是否成功;

對于多張圖片的上傳,往往項目需求時圖片全部上傳成功后要進行一下操作,看了一些其他的博文,給出了很好的辦法,其中一種就是單張上傳,并用GCD dispatch group來完成全部上傳完成后的統一回調,代碼如下:

dispatch_group_t group = dispatch_group_create();
    
    for (NSInteger i = 0 ; i<images.count; i++) {
        dispatch_group_enter(group);
        [manager POST:url parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
            
            NSData* imageData = UIImageJPEGRepresentation(images[i], 0.5);
            [formData appendPartWithFileData:imageData name:@"upimage" fileName:[NSString stringWithFormat:@"image[%ld].jpg",(long)i] mimeType:@"image/jpeg"];
            
        } progress:^(NSProgress * _Nonnull uploadProgress) {
            
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject){
            NSLog(@"第%ld張上傳成功",(long)i);
            dispatch_group_leave(group);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            NSLog(@"第%ld張上傳失敗",(long)i);
            dispatch_group_leave(group);
        }];
    }
    
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        NSLog(@"全部上傳完畢");
    });

images是傳過來的存放image的數組;

PHP端的代碼,本人PHP研究階段,只是單獨的實現可接收圖片,代碼還不完善,希望大家多多發表自己的建議?,你們的建議是我進步的動力;

$url = $_FILES["upimage"]["tmp_name"];
$name = $_FILES["upimage"]["name"];//拼接要作為服務器上保存的文件名字
$save_folder = $_SERVER['DOCUMENT_ROOT'].'/imagedownload/';
$newfname = $save_folder .$name;// 打開連接  rb+ 讀寫打開一個二進制文件,允許讀寫數據,文件必須存在。// 獲取客戶端上傳到緩存文件夾下的文件
$file = fopen ($url, "rb");
if ($file) {
    // a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件 存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。// 獲取要把客戶端傳遞過來的文件復制到新的文件夾下的名字   
    $newf = fopen ($newfname, "a");    
    if ($newf)        
        // 檢查文件是否結束,如結束,則返回非零值     
        while(!feof($file)) {     
            // 開始從某個文件讀取1MB 然后寫入到新的路徑1MB
            fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );        
        }}
        if ($file) {    
            // 關閉文件鏈接    
          fclose($file);
        }
      if ($newf) { 
       fclose($newf);
      }
Snip20170108_3.png

運行代碼后圖片上傳成功。?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,476評論 25 708
  • 不是什么法定節日 也不是誰的生日 但是今天一點都不普通 今天重慶地震了 我最好的閨蜜就在那里 像直播似的跟我訴說 ...
    oohasdyjsypcjm閱讀 338評論 1 2
  • 你好哇。 又是一年高考的日子,所以理所當然的又是一輪下不完的暴雨。 好像不管在什么地方,杭州也好舟山也好安順也好北...
    糖和餅干閱讀 162評論 0 0
  • 搗情緒真的要付出慘重的代價!看到自己心眼還那麼小,而且那麼不願意去觸碰自己的內在最痛的死穴,讓自己活在情...
    落子無悔ss閱讀 260評論 0 0