Я создаю приложение iOs в XCode как часть второстепенного программирования, я хочу загрузить изображения на сервер Rester и сохранить их в папке.
Я настроил сборщик изображений и контроллер изображений в XCode и приложил все усилия, чтобы понять документацию Rester, но я все еще не могу понять, что это правильно.Я попытался преобразовать изображение в строку, но это только сложные вещи, и я должен иметь возможность просто загрузить само изображение.
Вот код для приложения:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
imageView.contentMode = .scaleAspectFit
imageView.image = pickedImage
}
dismiss(animated: true, completion: nil)
}
func uploadImage() {
let imageFile = imageView.image?.jpegData(compressionQuality: 1)
if imageFile == nil { return }
PictureController.shared.uploadImage(forPicture: imageFile!) {_ in
print(self.picture)
}
}
func uploadImage(forPicture picture: Data, completion: @escaping (Picture?) -> Void) {
var request = URLRequest(url: uploadUrl)
request.httpMethod = "POST"
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
// Picture
request.httpBody = picture
// Upload Picture
let task = URLSession.shared.dataTask(with: request) { (data,
response, error) in
let jsonDecoder = JSONDecoder()
if let data = data,
let picture = try?
jsonDecoder.decode(Picture.self, from: data) {
completion(picture)
} else {
completion(nil)
}
}
task.resume()
}
И вот код на сервере:
from collections import defaultdict
from flask import Flask, request, g, flash, redirect, url_for, send_from_directory
from flask_restful import abort, Api, Resource
from werkzeug.utils import secure_filename
from database import *
UPLOAD_FOLDER = 'pictures'
app = Flask(__name__)
app.secret_key = 'The Key'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.config['MAX_CONTENT_LENGTH'] = 64 * 1024 * 1024
api = Api(app)
ALLOWED_EXTENSIONS = set(['pdf', 'png', 'jpg', 'jpeg', 'gif'])
class Picture(Resource):
def upload_file(self):
if request.method == 'POST':
f = request.files
f.save('uploads/uploaded_file')
return jsonify({'success': True})
api.add_resource(Picture, '/picture_upload')
if __name__ == '__main__':
app.run(debug=True)
Я ожидал, что изображение будет аккуратно помещено в папку, но вместо этого я получаю сообщение 405, сообщающее, что я делаю что-то, что не разрешено.
Это моя первая публикация, любая помощь будет принята с благодарностью, как по проблеме, так и по формулировке моего вопроса.