0
私はapiを使ってamazon s3 bucket_typeサーバーに顧客の署名イメージを投稿したいと思います...私は別のチュートリアルを参照しています...私はチュートリアルから十分な情報を得ていませんでした...私は次のコードで試しています私は結果が得られません...swift3のamazonバケットに画像をアップロードするには?
funcUpload(service:String,imagedata:Data,completion:@escaping (_ result:NSDictionary?,_ error:AnyObject?) ->()){
let boundaryConstant = "----------V2y2HFg03eptjbaKO0j1"
let urlpath:String = "http:myurl" + service
let url:NSURL = NSURL(string:urlpath)!
let request = NSMutableURLRequest(url: url as URL)
request.httpMethod = "P0ST"
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData
request.httpShouldHandleCookies = false
let contentType = "multipart/form-data; boundary=\(boundaryConstant)"
request.setValue(contentType, forHTTPHeaderField: "Content-Type"
let body = NSMutableData()
if imagedata != nil{
body.append("--\(boundaryConstant)\r\n".data(using: String.Encoding.utf8)!)
body.append("Content-Disposition: form-data; name=\"\("universalapparealproduct")\" ; filename=\"image.jpg\"\r\n".data(using: String.Encoding.utf8)!)
body.append("Content-Type: \("universalapparealproduct")\r\n\r\n".data(using: String.Encoding.utf8)!)
body.append(imagedata)
body.append("\r\n".data(using: String.Encoding.utf8)!)
}
body.append("--\(boundaryConstant)--\r\n".data(using: String.Encoding.utf8)!)
request.httpBody = body as Data
let config = URLSessionConfiguration.ephemeral
self.session = URLSession(configuration: config)
let task = session.dataTask(with: request as URLRequest) { (data, response, error) -> Void in
if let receivedData = data
{
do
{let resultDic = try JSONSerialization.jsonObject(with: receivedData, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary
completion(resultDic!,nil)
}
catch let error
{
NSLog("\(error)")
}
}
else if let errorMessage = error
{
completion(nil,errorMessage as AnyObject?)
}
self.session.invalidateAndCancel()
}
task.resume()
}
}
私はこの問題を解決するために手伝ってください。 ありがとうございます。
hi..my url私のアプリケーションURLをファイル/ upoadとして使用していて、バックエンドで "POST"メソッドのみを使用しています –
リクエストの本文が選択され、bucket_type = "my project type"要求された本体にこのbucket_typeをどこに設定する必要があるのか分かりません。 –
S3に画像をアップロードする一般的な方法は、バックエンドサーバーから事前設定されたURLを取得することです。このURLにはすでにバケットとファイル名、アップロードする必要があるすべての権限が含まれています。このURLを使用すると、http://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.htmlを参照して、バックエンドを通過することなくs3に直接アップロードできます。それがあなたが使用しているものなら、あなたは私が与えた指示に従うべきです。サーバーにイメージをアップロードして、それをs3にアップロードすると、そのサーバーが受け取る予定のものがわからないため、私はあなたを助けることができません。 –