大家好,我正在尝试使用iOS应用迅速将图像上传到FTP服务器。
我使用了以下库。 FileProvider
我面临的问题是上传到服务器的文件的字节数为零。
我检查了以下问题,但无法解决我的问题。
这是我编写的代码。
var ftpProvider: FTPFileProvider?
override func viewDidLoad() {
super.viewDidLoad()
let server: URL = URL(string: "ftp://x.x.x.x/")!
let username = "xxxxx"
let password = "xxxxxxx"
let credential = URLCredential(user: username, password: password, persistence: .forSession)
ftpProvider = FTPFileProvider(baseURL: server, mode: FTPFileProvider.Mode.passive, credential: credential, cache: URLCache())
ftpProvider!.delegate = self
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
guard let chosenImage = info[UIImagePickerControllerOriginalImage] as? UIImage else{
print("RIZK:- issue in picking images ")
return
}
// saving the image as a file fileName.png
_ = SavingManager.shared.saveImage(image: chosenImage)
// getting the local url of the image file
guard let localURL = SavingManager.shared.getSavedImageURL("fileName.png") else{
return
}
//just to check if the image is being returned successfully
guard let imagePreview = SavingManager.shared.getSavedImage(named: "fileName.png") else{
return
}
//getting the file size
SavingManager.shared.getFileSize(localURL.path)
//naming the file
let imageName = "\(DataManager.shared.getArchivedUser()?.lastName ?? "Guest")-\(Int(Date().timeIntervalSince1970)).png"
//uploading the image
let progress = ftpProvider?.copyItem(localFile: localURL, to: "files/\(imageName)", overwrite: true, completionHandler: { (error) in
if error == nil {
print("RIZK:-- Ready to upload")
}else{
print("RIZK:--\(error?.localizedDescription ?? "")")
}
})
print(progress?.fractionCompleted ?? 0)
self.navigationController?.dismiss(animated:true, completion: nil)
}
我还添加了委托方法,但是根本无法访问它们,
请使用此库的任何人提供帮助。
谢谢
答案 0 :(得分:1)
请不要将FTP用于 的任何外部接口,也可以通过Internet访问。任何人都可以拦截密码并进入您的服务器。
如果您要使用类似 的FTP,请使用SFTP或FTPS。
但是,您的应用不应使用这两种方法。因为我(作为某些用户)可以获取您的.ipa,所以请对其进行调试/反汇编,然后从中检索硬编码的凭据并访问您的服务器,然后上传和删除我喜欢的任何内容。您需要提供一个API端点,该端点可以接受文件上传并将文件放置在某处。您不得与客户得到的任何东西共享ftp凭据。