Задать вопрос
@Alexsandersky

Как добавить изображение к массиву изображений на сервере?

Здравствуйте! На данный момент есть класс, который отправляет от 1 до 11 параметров на сервер в JSON формате ( это текстовый параметр и от 0 до 10 параметров формата NSNumber). И класс построен так, что при изменение какого либо формата удаляются все данные которые уже есть на сервере и сохраняются новые, то есть идет полная перезапись. Это не страшно так то, как максимальный объем этих данных всего 2.7 килобайта. Задание гласит "Организовать как массив ссылок на изображения", и что нужно просто добавить массив изображений в текущий класс. Но возникают несколько проблем: 1 Если есть на сервере уже одно изображение, и мы просто добавляем еще одно, то получается идет перезапись уже двух изображений, а если их будет 10? То это сильный удар по трафику пользователя, плюс это не правильная конструкция взаимодействия сервера с приложением. 2 Во время перезаписи больше 5 изображений, получаю ошибку, что сервер не доступен. Я хочу отправлять конкретное изображение к уже существующему массиву изображений на сервере, и не перезаписывать их каждый раз. Так же присвоить к каждому изображению ID, что бы можно было удалять на сервере изображения из приложения. Я пробовал много различных вариантов, но не смог добиться желаемого результат. Вот код текущего класса

public class AnswersDataServerEntity: DataSetEntity {
    static let DataSetName = "DataSetName"

    var id: String? = "0"
    var streetId: UInt = 0
    var streetName: String? = ""
    var answers: [AnswerServerEntity]? = []
    var documents: [DocumentServerEntity]? = []

    private func save()
    {
        let deleteCommand = DataSetCommand(dataSetAction: DeleteDataSetAction<AnswersDataServerEntity>(dataSetName: AnswersDataServerEntity.DataSetName, data: self)

        deleteCommand.executeWithSuccess(
            {  (commond) -> Void in
                self.add()
            },
            errorHandler: { (error) -> Void in
        })
    }

    private func add()
    {
        let command = DataSetCommand(dataSetAction: AddDataSetAction<AnswersDataServerEntity>(dataSetName: AnswersDataServerEntity.DataSetName, data: self)

        command.executeWithSuccess(
            { (command) -> Void in
                if let _command = command as? DataSetCommand<AnswersDataServerEntity> {
                    NSLog("\(_command.dataSetAction)")
                }
            },
            errorHandler: { (error) -> Void in
        })
    }

    static func saveSelected()
    {
        self.selected().save()
    }

    static private func selected() -> AnswersDataServerEntity
    {
        var result = AnswersDataServerEntity()
        if let selectedCountry = CountryEntity.selected(){
            for answer in AnswerEntity.userAnswers() {
                result.answers?.append(AnswerServerEntity(questionId: answer.questionId))
            }
        }
        for document in DocumentEntity.deserializeDocuments() {
            result.documents?.append(DocumentServerEntity(documentId: document.documentId, documentTitle: document.documentTitle, documentImageString: document.documentImageURL))
        }
        return result
    }
}

public class AnswerServerEntity: DataSetEntity {
    var questionId: Int = 0

    convenience init (questionId: Int){
        self.init()
        self.questionId = questionId
    }
}

public class DocumentServerEntity: DataSetEntity {

    var documentId: Int = 0
    var documentTitle: String = ""
    var documentImageString: String! // this string will to need to decode in base64string that we can to send it as JSON

    convenience init(documentId: Int, documentTitle: String, documentImageString: String) {
        self.init()
        self.documentId = documentId
        self.documentTitle = documentTitle
        self.documentImageString = documentImageString
    }
}


Результат с сервера, чтобы было лучше понимание, что отправляется.

request: {
    "object" : "storage",
    "section" : "api",
    "method" : "addData",
    "data" : [
    {
    "answers" : [
    {
    "questionId" : 01
    },
    {
    "questionId" : 03
    },
    {
    "questionId" : 06
    },
    {
    "questionId" : 10
    }
    ],
    "documents" : [
    {
    "documentImageString" : "\/var\/mobile\/Containers\/Data\/Application\/DD6F8D10-1241-4119-9639-AB983B27CFA6\/Documents\/04DDA484-F257-43BC-A459-3BC7C6050D6F",
    "documentTitle" : "xcode",
    "documentId" : 0
}
],
"streetName" : "Молодежная",
"id" : "0",
"streetId" : 14
}
],
"token" : "**********************$$$$*$*$*$",
"dataSet" : "DataSetName"
}
  • Вопрос задан
  • 174 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
Передавать изображения по очереди и дописывать в массив, который хранится в сессии?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы