Форум программистов, компьютерный форум, киберфорум
Наши страницы
Swift
Войти
Регистрация
Восстановить пароль
 
Melany
21 / 4 / 2
Регистрация: 05.07.2015
Сообщений: 126
#1

Download .zip file to vk.com, using their api - Swift

01.05.2017, 01:51. Просмотров 533. Ответов 0

Здравствуйте, подскажите пожалуйста, я хочу загрузить файл .zip в документы юзера в vk.com, в документации написано, что для этого нужно пройти 3 этапа
1, получить адрес сервера, что у меня поучилось
2, на этом этапе нужно загрузить файл, вот на этом этапе у меня всегда приходит {"error":"unknown error"}

Подскажите, пожалуйста что я делаю не так,
uploadUrl - это путь к серверу vk.com, полученный на первом этапе

Код
   func uploadFileToServer(_ uploadUrl: String, withFileUrl name: URL, onCompletion:@escaping (_ receivedFile: String?) -> Void) {
        let url = URL(string:uploadUrl)
        guard let urlExist = url else { return }
        var urlRequest = URLRequest.init(url: urlExist, cachePolicy: .reloadIgnoringLocalCacheData, timeoutInterval: 30)
        var dataZip: Data?
        do {
            dataZip = try Data.init(contentsOf: name)
        } catch let error as NSError {
            print(error.localizedDescription)
        }
        
        var _params: [String : Data] = Dictionary()
        _params["file"] = dataZip
        var body = Data()
        
        let boundary = "---------------------------0983745982375409872438752038475287"
        
        let contentType = "multipart/form-data; boundary=\(boundary)"
        urlRequest.addValue(contentType, forHTTPHeaderField:"Content-Type")

        if let zipData = dataZip {
            
            body.append("--\(boundary)\r\n".data(using: .utf8)!)
            body.append("Content-Disposition: attachment; name="Document"; filename=".zip\r\n".data(using: .utf8)!)
            body.append("Content-Type: application/octet-stream\r\n\r\n".data(using: .utf8)!)
            body.append(zipData)
            body.append("\r\n".data(using: .utf8)!)
        }
        
        body.append("--\(boundary)--\r\n".data(using: .utf8)!)
        
        urlRequest.httpBody = body
        
        urlRequest.httpMethod = "POST"

        let task = URLSession(configuration: .default).dataTask(with: urlRequest) {
            [weak self](data, response, error) -> Void in
            print(response)
            if let data = data {
                do {
                    if let returnData = String(data: data, encoding: .utf8) {
                        print(returnData)
                        onCompletion(returnData)
                    }
                    
                } catch let error as NSError {
                    print(error.localizedDescription)
                }
                
            } else if let error = error {
                print(error.localizedDescription)
            }
 
        }
        task.resume()
  
    }
Спасибо огромное за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2017, 01:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Download .zip file to vk.com, using their api (Swift):

File Download
Есть форма, на форме поле "Pict" типа Richtext Есть xpage с 2мя полями(Controls) - "File Upload" и...

контрол File Download
как в данный контрол отобразить аттачи из другой базы? все другие поля документа чужой базы...

WinInet Download File
Нужна небольшая помощь, как этот кусок кода отвязать от консольного приложения к нормальной...

Download file asp ajax
Добрый вечер, подскажите пожалуйста, вызываю метод через ajax который возвращает файл, return...

Download file from Google Drive
Проблема состоит в следующем: необходимо используя Google Drive API загрузить файл на устройство...

Commons net ftp file download
Есть код, который делает download файла c ftp. Для локального фтп всё работает. Для удалённого...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2017, 01:51
Привет! Вот еще темы с решениями:

Ruby on Rails Paperclip Mongoid file download
Добрый день! Кто может покажите пример кода Ruby on Rails как download file с базы данных Mongoid с...

Microsoft Download File Manager - Как его запустить повторно?
Windows Download Center + Internet Explorer + Microsoft Download File Manager - Как его запустить...

Как сделать file download по паролю самым простым способом?
Подскажите, пожалуйста, как сделать file download по паролю самым простым способом. Пароль 1 на...

REST api Google drive download progress
Есть процедура скачивания файла RESTResponseDataSetAdapter1.AutoUpdate := false; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru