热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iosphp批量上传,PHP从iOS上传

抱歉长期困境.我编写iOS项目并刚开始使用PHP.这是我的问题.我开发了一个Xcode项目,将照片上传到一个web文件夹,该文件夹调用来自在线php脚本

抱歉长期困境 . 我编写iOS项目并刚开始使用PHP . 这是我的问题 . 我开发了一个Xcode项目,将照片上传到一个web文件夹,该文件夹调用来自在线php脚本的响应 . 但是响应返回NSLog(@“没有给出响应”) . 我修改了将我的应用程序中的照片上传到主文件夹的php脚本,创建了一个随机文件名,然后将其复制到子文件夹中 . 这一切都很完美 . 但是有两个主要问题 . 一 . 上传的图像水平翻转(镜像) . 还有两个 . 我试图在我的Xcode项目中获得响应,以返回主图像上传位置的路径 . 这是我的代码

XCODE(上传完全正常,但返回“没有给出响应”而不是“我的图像上传路径”

AFHTTPRequestOperationManager *manager [AFHTTPRequestOperationManager manager];

AFHTTPRequestSerializer *serializer = [AFHTTPRequestSerializer serializer];

NSMutableURLRequest *request = [serializer multipartFormRequestWithMethod:

@"POST" URLString:UPLOAD_URLs parameters:nil

constructingBodyWithBlock:^(id formData) {

[formData appendPartWithFileData:UIImageJPEGRepresentation(capturedImage, QUALITY_PHOTO_FOR_UPLOAD)

name:@"photo"

fileName:@"test"

mimeType:@"image/jpeg"];

}];

AFHTTPRequestOperation *operation =

[manager HTTPRequestOperationWithRequest:request

success:^(AFHTTPRequestOperation *operation, id responseObject) {

NSLog(@"My Image Upload Path: %@", responseObject);

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Report"

message:@"Your file is uploaded." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];

[alertView show];

failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"No response given");

}];

[operation setUploadProgressBlock:^(NSUInteger __unused bytesWritten,

long long totalBytesWritten, long long totalBytesExpectedToWrite) {

}];

[operation start];

PHP代码(上传,创建随机文件名,将照片复制到thumb文件夹中完全没问题,但上传时照片被翻转,我的日志中出现了一些错误,我需要有一个响应,显示Xcode响应中图像的路径) .

header('Content-Type: application/json');

function cwUpload($field_name = 'photo', $target_folder = '', $file_name = '', $thumb = TRUE, $thumb_folder = 'thumbs/', $thumb_width = '352', $thumb_height = '264'){

//folder path setup

$target_path = $target_folder;

$thumb_path = $thumb_folder;

//file name setup

$newFileName = md5(rand().time().basename($_FILES['photo']['name'])).'.jpeg?s=#39;;

//upload image path

$upload_image = $target_path.$newFileName;

$exif = exif_read_data($upload_image, 'IFDO', true);

$orientation = $exif['IFD0']['Orientation'];;

if($orientation != 0) {

$image = imagecreatefromstring(file_get_contents($upload_image));

switch($orientation) {

case 8:

$image = imagerotate($image,90,0);

break;

case 3:

$image = imagerotate($image,180,0);

break;

case 6:

$image = imagerotate($image,-90,0);

break;

}

imagejpeg($image, $upload_image);

}

//upload image

if(move_uploaded_file($_FILES[$field_name]['tmp_name'],$upload_image))

{

//thumbnail creation

if($thumb == TRUE)

{

$thumbnail = $thumb_path.$newFileName;

list($width,$height) = getimagesize($upload_image);

$thumb_create = imagecreatetruecolor($thumb_width,$thumb_height);

switch($file_ext){

case 'jpg':

$source = imagecreatefromjpeg($upload_image);

break;

case 'jpeg':

$source = imagecreatefromjpeg($upload_image);

break;

case 'png':

$source = imagecreatefrompng($upload_image);

break;

case 'gif':

$source = imagecreatefromgif($upload_image);

break;

default:

$source = imagecreatefromjpeg($upload_image);

}

imagecopyresized($thumb_create,$source,0,0,0,0,$thumb_width,$thumb_height,$width,$height);

switch($file_ext){

case 'jpg' || 'jpeg':

imagejpeg($thumb_create,$thumbnail,100);

break;

case 'png':

imagepng($thumb_create,$thumbnail,100);

break;

case 'gif':

imagegif($thumb_create,$thumbnail,100);

break;

default:

imagejpeg($thumb_create,$thumbnail,100);

}

}

return $fileName;

}

else

{

return false;

}

}

if(!empty($_FILES['photo']['name'])){

//call thumbnail creation function and store thumbnail name

$upload_img = cwUpload('photo','','',TRUE,'thumbs/','352','264');

//full path of the thumbnail image

$thumb_src = 'thumbs/'.$upload_img;

echo json_encode($message);

}else{

//if form is not submitted, below variable should be blank

$thumb_src = '';

$message = '';

}

?>

最后是我的日志的错误

[09-Mar-2017 21:29:54 UTC] PHP警告:第35行/home/imagine/public_html/galleries/main/galleries/test/uploading.php中的非法字符串偏移'IFD0'[09-Mar- 2017 21:29:54 UTC] PHP警告:第35行/home/imagine/public_html/galleries/main/galleries/test/uploading.php中的非法字符串偏移'Orientation'[09-Mar-2017 21:29:54 UTC] PHP警告:file_get_contents(6dbaa3653321640d706c1c5bd281eed5.jpg):无法打开流:第37行/home/imagine/public_html/galleries/main/galleries/test/uploading.php中没有此类文件或目录



推荐阅读
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
author-avatar
sisihg_676
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有