首页 > 解决方案 > 在 Swift 4.2 中传递给多部分 API 的非拉丁(多语言)文件名

问题描述

试图将文件从 iPhone iCloud 上传到多部分 API。当文件名是英文文本时,它在上传后显示良好,但我确实有文件名不是英文,那么这是错误的。

在下图中,文件名是中文“示例.pdf”,但是当我上传它时,我得到的文本是“??.pdf”

中文文件名

后端 API 已经处理了这种转换,因为当我从 Android 上传文件时它可以工作。

此外,当我从 textfiled 发送文本时,它会正确显示我应该为字符串做什么?

//Code from uploading API Call

myRequestData.append("\(MPboundary)\r\n".data(using: String.Encoding.utf8)!)
                // set upload image, name is the key of image
                myRequestData.append("Content-Disposition: form-data; name=\"\(mediaObj!.key)\"; filename=\"\(mediaObj!.fileName)\"\r\n".data(using: String.Encoding.utf8)!)
                myRequestData.append("Content-Type: \(mediaObj!.mimeType)\r\n\r\n".data(using: String.Encoding.utf8)!)
                myRequestData.append(mediaObj!.data!)
                myRequestData.append("\r\n".data(using: String.Encoding.utf8)!)

标签: iosswiftmultipartform-data

解决方案


请将 dbfilename字段更改collationutf8mb4_unicode_ci它将被修复,否则您必须在发送时对其进行编码,filename并在您的应用程序上显示时对其进行解码。


推荐阅读