从HTML上传图片到AFNetWorking上传图片代码浅析_html/css_WEB-ITnose
先介绍一下背景啊,本人是一名从业2.5年+的IOS开发工程师。平时喜欢搞点小研究,技术上虽然跟大牛们差很远,但是个人觉得写点对别人有帮助的文章也不是什么坏事。这篇文章主要是为了一些不了解图片上传的过程的同学们准备的,之前好几个群友都提到了使用AFNetWorking上传图片不了解是什么过程。可能都是从网上Copy过来的代码,所以不是很清楚流程才导致的不知道该在哪里写什么参数。设置什么参数。下面我就跟大家分享一下。使用Web和AFNetWorking的上传过程。两个前台的代码加上一个PHP后台的代码我想大家会足够明白图片的上传流程了。这就是我举两个例子的原因了,对比着看或许更加事半功倍吧。
首先先从Web上传图片开始说起。贴段代码解释一下吧。
<html><head><meta charset="UTF-8"> <title> Upload Picture. </title></head><body><form action="handle.php" name="form" method="post" enctype="multipart/form-data"> <input type="file" name="fileData" /> <input type="submit" name="submit" value="上传" /></form></body></html>
分析一下上面的代码,其实没有什么可以说的懂html的都知道。是一个提交表单。要点:method=”post” :设置HTTP请求方式为POST请求enctype=”multipart/form-data” :这个是一个需要了解的地方multipart/form-data这个值用于支持向服务器发送二进制数据。这个大家是不是看着感觉似曾相识的感觉呢? AFMultipartFormData协议,这个肯定不陌生了吧。其实AFMultipartFormData协议的作用就等价于multipart/form-data这个了。刚好提到AFMultipartFormData这个协议,那么下面我贴上另外的AFNetWorking上传图片的代码吧。大家都知道,由于IOS不能像Web那样通过提交表单来上传数据,那么我们只能通过HTTP请求来提交数据。代码如下
UIImage *image = [UIImage imageNamed:@"测试图片.jpg"]; NSData *data = UIImageJPEGRepresentation(image, 1.0); AFHTTPSessionManager *session = [AFHTTPSessionManager manager]; [session POST:@"图片上传接口" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData){ [formData appendPartWithFileData :data name:@"fileData" fileName:@"图片名称.jpg" mimeType:@"image/jpeg"]; } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject){ } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error){ }];
到这里大家一定会发现有点神似并且会有一个共同的地方。就是共同都用到了fileData这个参数。没有错,代码先做了个POST请求,然后使用此协议起到了类似Web提交表单中图片的作用。POST:parameters:constructingBodyWithBlock: 此方法为AFNetWorking中自带方法。百度查一下即可。
前面我介绍了那么多前段的操作,下面我们来看下服务器端怎么来接收图片。以PHP后台为例子了。简单的写了个PHP上传图片的后台。
<?php header('Content-Type:text/json; charset=utf-8'); $file = $_FILES['fileData']; $name = $file['name']; $type = strtolower(substr($name,strrpos($name,'.')+1)); $allow_type = array('jpg','jpeg','gif','png'); if(!in_array($type, $allow_type)){ return ; } if(!is_uploaded_file($file['tmp_name'])){ return ; } $upload_path = "./"; if(move_uploaded_file($file['tmp_name'],$upload_path.$file['name'])){ $array = array( 'code' => 'success' ); echo json_encode($array); }else{ $array = array( 'code' => 'fail' ); echo json_encode($array); }?>
大家是不是又发现了什么?$_FILES[‘fileData’]没错,就是这个了用来获取表单中name为fileData的二进制图片数据。获取到这张图片数据之后将图片保存至服务器。至此为图片上传至服务器的全部流程了。
可能写的不是那么好,不是那么有价值。但是个人感觉还是很实用,希望不喜勿喷。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











HTML은 간단하고 배우기 쉽고 결과를 빠르게 볼 수 있기 때문에 초보자에게 적합합니다. 1) HTML의 학습 곡선은 매끄럽고 시작하기 쉽습니다. 2) 기본 태그를 마스터하여 웹 페이지를 만들기 시작하십시오. 3) 유연성이 높고 CSS 및 JavaScript와 함께 사용할 수 있습니다. 4) 풍부한 학습 리소스와 현대 도구는 학습 과정을 지원합니다.

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

anexampleStartingtaginhtmlis, whithbeginsaparagraph.startingtagsareessentialinhtmlastheyinitiate rements, definetheirtypes, andarecrucialforstructurituringwebpages 및 smanstlingthedom.

GiteEpages 정적 웹 사이트 배포 실패 : 404 오류 문제 해결 및 해결시 Gitee ...

웹 주석 기능에 대한 Y 축 위치 적응 알고리즘이 기사는 Word 문서와 유사한 주석 기능을 구현하는 방법, 특히 주석 간격을 다루는 방법을 모색합니다 ...

HTML, CSS 및 JavaScript는 웹 개발의 세 가지 기둥입니다. 1. HTML은 웹 페이지 구조를 정의하고 등과 같은 태그를 사용합니다. 2. CSS는 색상, 글꼴 크기 등과 같은 선택기 및 속성을 사용하여 웹 페이지 스타일을 제어합니다.

이미지를 클릭 한 후 주변 이미지를 산란 및 확대하는 효과를 얻으려면 많은 웹 디자인이 대화식 효과를 달성해야합니다. 특정 이미지를 클릭하여 주변을 만들 수 있습니다 ...
