从 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)的主要内容,如果未能解决你的问题,请参考以下文章