从 imagePicker 获取本地文件路径(iOS,Objective C)

Posted

技术标签:

【中文标题】从 imagePicker 获取本地文件路径(iOS,Objective C)【英文标题】:Getting Local File Path from imagePicker (iOS, Objective C) 【发布时间】:2018-04-10 09:44:17 【问题描述】:

我正在努力从 imagePicker 获取文件路径并将其发送到服务器。

这是尝试通过本地路径客户端:

NSData *webData = UIImagePNGRepresentation(info[UIImagePickerControllerOriginalImage]);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:@"test.png"];
[webData writeToFile:localFilePath atomically:YES];

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager POST:url.absoluteString
   parameters:@@"path": localFilePath
     progress:nil
      success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) 
... //results always in error

这是接收路径键的后端代码(在 javascript 中):

var fs = require('file-system');

file 
 data: fs.readFileSync(path),

但是,我总是收到这样的错误:

错误:ENOENT:没有这样的文件或目录,打开 '/Library/Developer/CoreSimulator/Devices...

我的 JS 代码有问题吗?或者我应该使用什么其他方法来获取文件路径? 如果有人可以在这里帮助我,我会很高兴。

附:获取文件路径的其他流行的现有 *** 答案会引发相同的错误代码。

【问题讨论】:

只需保存在文档目录中选择的图像副本并使用新的保存路径 【参考方案1】:

这是不可能的。您需要创建该图像的数据并使用多部分将其上传到服务器。 我希望这个链接对你有用:

How to get UIImage from local url and post the image to server ?

【讨论】:

【参考方案2】:

要么我误解了这个问题,要么你正在尝试做不可能的事情。

服务器无法访问您设备上的路径(在本例中为模拟器),因为它只存在于设备上。

如果你想传递实际的图像,你需要在请求中发送数据本身,你不能让服务器获取它的路径并通过互联网进入设备来获取它。

this question 接受的答案是如何将图像数据附加到 AFNetworking 请求的示例。不幸的是,我对服务器的了解不够多,无法在那里提供太多帮助,但我希望您能够像从请求中获取路径一样获得它,它只是原始图像数据而不是文件路径。

【讨论】:

来自stripe.com/docs/file-upload:“要上传文件,请向files.stripe.com/v1/files 发送一个multipart/form-data 请求。请注意,子域files.stripe.com 与大多数Stripe 的API 端点不同。请求应指定用途和文件。...以下示例将位于 /path/to/a/file.jpg 的文件上传到您的本地文件系统上,用途为争议证据: var stripe = require("stripe")("sk_test_key"); const fp = fs.readFileSync('/path/to/a/file.jpg'); stripe.fileUploads.create( file: data: fp, name: 'file.jpg', type: 'application.octet-stream', , purpose: 'dispute_evidence', ); " 我想我对“以下示例在本地文件系统上上传位于 /path/to/a/file.jpg 的文件...”部分感到困惑。我该如何正确理解这一点?感谢您的帮助! 我在我的答案中添加了另一个链接,其中显示了如何使用 AFNetworking 上传文件的示例。希望有帮助! 感谢@deanWombourne,我用 AFNetworking 尝试了这种方法。我收到错误消息:“TypeError:第一个参数必须是字符串、缓冲区、ArrayBuffer、数组或类似数组的对象。”我应该如何以服务器端代码接受的形式传递数据?

以上是关于从 imagePicker 获取本地文件路径(iOS,Objective C)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift/SwiftUI 从 ImagePicker 获取选定的图像文件名

如何在 swift 4 中从图像选择器获取照片本地 url

获取 PHAsset 的本地文件路径

从特定路径下下载文件到本地

从本地路径 iOS 加载网页

react-native-image-picker vs expo ImagePicker