我们有一个网站使用ng-file-upload向后端发送请求以上传图片。它将图像转换为不同的尺寸和尺寸。上传到 Amazon S3服务器。它在网上运行良好。 我们的前端和前端后端包含 JS代码。
从iOS应用程序中,我们可以将文件上传到AWS SDK for iOS,但这需要花费太多时间以及请求超时。
根据要求,通过使用传统方法从iOS App上传文件到服务器(节点),然后转换为不同大小(ng-file-upload - multiparty & GraphicsMagick)&然后上传到亚马逊服务器(S3)。
因此,我们使用传统方法将图像上传到后端服务器。
图片上传代码
NSMutableURLRequest *urlRequest = [NSMutableURLRequest
requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:DEFAULT_TIMEOUT];
[urlRequest setHTTPMethod:@"POST"];
NSString *boundary = @"---------------------------14737809831464368775746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[urlRequest addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
//Image
if(imageData)
{
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", imgName, imgName] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:imageData];
[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
}
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[urlRequest setHTTPBody:body];
我们在node.js后端使用 multiparty 。即使我们也无法获取任何文件对象来填充进一步的步骤。它在后端引发错误。
从应用程序上传时,请求标头中的文件详细信息在后端为空。
因此,我们收到错误,例如'path'undefined 。
因此,我们没有获得任何文件或图像到后端,因此无法进一步处理对话以及上传。我们住在这个地方。
请做必要的事。任何帮助将不胜感激。
提前致谢。
答案 0 :(得分:1)
我认为你必须遵循两个步骤 -
1 - 请在服务器(节点)上验证一次脚本文件名必须与从iOS发送的文件名相同。
来自ios的2 - 我们正在使用它来上传服务器上的图像。
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\" ; filename=\"%@\"\r\n", imgName] dataUsingEncoding:NSUTF8StringEncoding]];
name = \“userfile \”必须与服务器脚本匹配。