菜鸟教程小白 发表于 2022-12-11 19:20:46

ios - 返回 ENOTCONN 错误


                                            <p><p>我正在尝试将图像上传到 Aws S3 存储桶。我尝试按照教程进行操作,但收到一条错误消息:“由于协议(protocol)尚未设置而返回 ENOTCONN。”我是 swift 新手,我无法理解为什么还会发生错误。我的 S3 上传代码如下:</p>

<pre><code> let uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest?.body = url!
uploadRequest?.key = remoteFileName
uploadRequest?.bucket = S3BucketName
uploadRequest?.contentType = &#34;image/&#34; + ext

let transferManager = AWSS3TransferManager.default()

// Perform Upload
transferManager.upload(uploadRequest!).continueWith(block: { (task:AWSTask&lt;AnyObject&gt;) -&gt; AnyObject! in

      if let error = task.error{
                print(&#34;error \(error.localizedDescription)&#34;)
            }

      if task.result != nil {
            let url = AWSS3.default().configuration.endpoint.url
            let publicURL = url?.appendingPathComponent((uploadRequest?.bucket!)!).appendingPathComponent((uploadRequest?.key!)!)
               print(&#34;Uploaded to:\(publicURL)&#34;)
            }
             return nil
})
</code></pre>

<p>我的 S3 位于 ap-south-1 中,认知池 ID 位于 us-west-2 中。我想这就是问题所在。有没有办法解决这个问题,而无需在 us-west-2 中创建另一个存储桶。
我收到以下错误:</p>

<p> <a href="/image/fNdtv.png" rel="noreferrer noopener nofollow"><img src="/image/fNdtv.png" alt="error"/></a> </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果没有为身份验证设置 cognito 池,您希望存储桶策略有点像这样:注意 <strong>Principal</strong> 和 <strong>Action</strong> 值 <a href="/image/gHflw.png" rel="noreferrer noopener nofollow"><img src="/image/gHflw.png" alt="Bucket Policy"/></a> </p>

<p>另外,您使用 <code>AWSS3TransferManagerUploadRequest</code> 有什么特别的原因吗?如果该政策无法解决您的问题,您可以将以下代码用于 <code>AWSS3TransferUtilityUploadExpression</code>,该代码以 block 的形式异步发送您的数据。</p>

<pre><code>   let expression = AWSS3TransferUtilityUploadExpression()

    expression.progressBlock = progressBlock

    transferUtility.uploadData(UIImagePNGRepresentation(imageNew!)!,
                               bucket: &#34;bucket-name&#34;,
                               key: (imgName.removeWhitespace()),
                               contentType: &#34;image/png&#34;,
                               expression: expression,
                               completionHandler: completionHandler).continueWith { (task) -&gt; AnyObject! in
                                                if let error = task.error {
                                                    print(&#34;Error: \(error.localizedDescription)&#34;)
                                                }

                                                if let _ = task.result {
                                                    print(&#34;Upload Starting!&#34;)
                                                    // Do something with uploadTask.
                                                }

                                                return nil;
                }
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 返回 ENOTCONN 错误,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/47426902/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/47426902/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 返回 ENOTCONN 错误