热门标签 | 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中没有此类文件或目录



推荐阅读
  • 过去查询Mysql的时候,都见3306对所有端口开放着,感觉不安全。netstat -anlp | grep mysqltcp 0&am ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 2.2 组件间父子通信机制详解
    2.2 组件间父子通信机制详解 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
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社区 版权所有