gpt4 book ai didi

image - RestKit图片上传参数

转载 作者:行者123 更新时间:2023-12-03 17:55:55 25 4
gpt4 key购买 nike

我已经多次尝试使用 RestKit 启用 POST 图像文件传输,但到目前为止仅使用curl 成功。工作代码如下,但它是同步的,导致 UI 无响应。

NSArray *arguments =
[NSArrayarrayWithObjects:assetScriptFullPath,
@"-F", [NSString stringWithFormat:@"asset[file]=@%@", fullPath],
@"-F", [NSString stringWithFormat:@"asset[user_id]=%d", user_id],
@"-F", [NSString stringWithFormat:@"asset[checksum]=%s", [(NSString *)md5hash UTF8String]],
nil];
NSTask *task = [NSTasklaunchedTaskWithLaunchPath:@"/usr/bin/curl"arguments:arguments];

服务器接收到的curl调用如下:

{
"asset"=>{
"file"=>#<ActionDispatch::Http::UploadedFile:0xcfcc630
@original_filename="IMG_6236.JPG",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"asset[file]\"; filename=\"IMG_6272.JPG\"\r\nContent-Type: image/jpeg\r\n",
@tempfile=#<File:/tmp/RackMultipart20121117-21489-brm3b9>>,
"user_id"=>"522",
"checksum"=>"ab23bc492bac990d9022248315c743c1"
}
}

使用 RestKit 的一次尝试基于这篇文章 ( RestKit Image Upload ),但不在 Assets 中嵌套文件。我尝试将参数嵌套在“ Assets ”中,但没有成功或崩溃了。

{
"user_id"=>"522",
"checksum"=>"ab23bc492bac990d9022248315c743c1",
"file"=>#<ActionDispatch::Http::UploadedFile:0x883eb9c
@original_filename="file",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"file\"; filename=\"file\"\r\nContent-Type: image/jpeg\r\n",
@tempfile=#<File:/tmp/RackMultipart20121125-25702-ac8ck9>>
}

使用下面的 RestKit 高级教程中描述的方法,我要么无法获取所需的层次结构( Assets 内的文件),要么无法在不崩溃的情况下获取附加的图像数据。 https://github.com/RestKit/RestKit/blob/master/Docs/MobileTuts%20Advanced%20RestKit/Advanced_RestKit_Tutorial.md我尝试附加导致崩溃的图像的一种方法如下所述: Serialize nested image in RestKit (Rails Backend)

{
"asset"=>{
"user_id"=>"522",
"file"=>"@/Users/dev/IMG_6236.JPG",
"checksum"=>"ab23bc492bac990d9022248315c743c1"
}
}

有什么建议吗?谢谢!

<小时/>

如果我可以更改服务器期望的内容,我可以让它使用平面参数层次结构。但这不是解决方案,我无法更改层次结构。代码如下:

[params setFile:asset forParam:@"file"];
[params setData:[name dataUsingEncoding:NSUTF8StringEncoding] forParam:@"name"];
[params setData:[user_id dataUsingEncoding:NSUTF8StringEncoding] forParam:@"user_id"];
[client post:assetScriptPath params:params delegate:self];

这是服务器看到的内容,但我需要将所有这些都包含在上面的“ Assets ”中。

{
"file"=>#<ActionDispatch::Http::UploadedFile:0xcfcc630
@original_filename="IMG_6236.JPG",
@content_type="image/jpeg",
@headers="Content-Disposition: form-data; name=\"file\"; filename=\"IMG_6272.JPG\"\r\nContent-Type: image/jpeg\r\n",
@tempfile=#<File:/tmp/RackMultipart20121117-21489-brm3b9>>,
"user_id"=>"522",
"checksum"=>"ab23bc492bac990d9022248315c743c1"
}

最佳答案

我们的方法是将图像编码为 base64Encoding 并在服务器端对其进行解码。

类似这样的事情。

NSData *imageData = [NSData dataWithData:imageForUpload];
NSString *encodedString = [imageData base64Encoding];

之后它就像常规的 RestKit 帖子一样工作。

关于image - RestKit图片上传参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13561485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com