繁体   English   中英

通过将Node.js与Multiparty和GraphicsMagick结合使用,将iOS图像上传到S3

[英]iOS Image upload to S3 by using Node.js with Multiparty and GraphicsMagick

我们有一个网站正在使用ng-file-upload向后端发送请求以上传图像。 它将图像转换为不同大小并上传到Amazon S3服务器。 它在网络上运行良好。 我们的前端和后端包含JS代码。

通过iOS App,我们可以将文件上传到iOS的AWS开发工具包 ,但是这会花费太多时间,而且请求总是超时。

根据要求,通过使用传统方法将文件从iOS App上传到服务器(节点) ,然后转换为不同大小(ng-file-upload-multiparty&GraphicsMagick) ,然后上传到Amazon服务器(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后端中使用多方 甚至我们也无法获取任何文件对象来填充进一步的步骤。 它在后端抛出错误。

从应用程序上载时,后端的“ 请求”标头中的文件详细信息为空。 因此,我们收到类似'path'undefined的错误。

因此,我们没有将任何文件或图像上传到后端,因此无法进一步处理对话以及上传。 我们停留在这个地方。

我认为您必须遵循两个步骤-

1-请在服务器(节点)上验证一次脚本文件名必须与从iOS发送的文件名相同。

2-从ios我们正在使用类似的方法在服务器上上传图像。

[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\" ; filename=\"%@\"\r\n", imgName] dataUsingEncoding:NSUTF8StringEncoding]];

name = \\“ userfile \\”必须与服务器脚本匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM