Ich benutze den folgenden Code, um Bild/Video auf FTP hochzuladen. Das komplette Bild wird nicht hochgeladen. Lowe Teil des Bildes wird geschnitten. Am Ende des Upload-Prozesses werden die vollständigen Daten hochgeladen, aber das Bild wird geschnitten. Ich kann kleine Bilder und Videos hochladen. Das Problem betrifft große Bilder und Videos. Bitte lassen Sie mich wissen, welche Änderungen ich im folgenden Code vornehmen muss.Bild/Video auf FTP hochladen Swift 3.0
let buf = movieData?.bytes.assumingMemoryBound(to: UInt8.self)
let buf2 = movieData?.bytes.assumingMemoryBound(to: UInt8.self)
let buf3 = UnsafeMutablePointer<UInt8>.allocate(capacity: (movieData?.length)!)
var leftOverSize = movieData?.length
let bytesFile = movieData?.length
var totalBytesWritten = 0
var bytesWritten = 0
let ftpUrl = NSURL(string: "FTP_URL")
let stream = CFWriteStreamCreateWithFTPURL(nil,ftpUrl!).takeUnretainedValue()
let cfstatus = CFWriteStreamOpen(stream) as Bool
// connection fail
if !cfstatus {
print("Not connected")
}
repeat{
// Write the data to the write stream
bytesWritten = CFWriteStreamWrite(stream, buf, leftOverSize!)
print("bytesWritten: \(bytesWritten)")
if (bytesWritten > 0) {
totalBytesWritten += bytesWritten
// Store leftover data until kCFStreamEventCanAcceptBytes event occurs again
if (bytesWritten < bytesFile!) {
leftOverSize = bytesFile! - totalBytesWritten
memmove(buf3, buf2! + bytesWritten, leftOverSize!)
}else{
leftOverSize = 0
}
}else{
print("CFWriteStreamWrite returned \(bytesWritten)")
break
}
if !CFWriteStreamCanAcceptBytes(stream){
sleep(1)
}
}while((totalBytesWritten < bytesFile!))
CFWriteStreamClose(stream)