Почему mimeType, если указан «application / json», не отображается в серверной части? - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь загрузить файл на сервер, который является файлом .json. Я отправляю двоичные данные вместе с именем файла и Mimetype, но в бэкэнде не отображается, какое это расширение файла.

Как это работает? Что произойдет, если у меня будет одно и то же имя файла, но разные расширения для загрузки на сервер. Что произойдет, если я захочу загрузить и затем десериализовать его как два разных расширения?

IEnumerator UploadFileData()
{
    string mapnamedl = "123";
    Debug.Log("Mapname local = " + mapnamedl);
    string locapath = "file://" + Application.persistentDataPath + "/" + mapnamedl + ".json";
    Debug.Log("local path = " + locapath);
    WWW localFile = new WWW(locapath);
    yield return localFile;

    if (localFile.error == null)
    {
        Debug.Log("Local file found successfully");
    }
    else
    {
        Debug.Log("Open file error: " + localFile.error);
        yield break; // stop the coroutine here
    }

    Debug.Log("local file text" + localFile.text);
    WWWForm postForm = new WWWForm();
    string mimetypes = "application/json";
    postForm.AddBinaryData("Jsondata", localFile.bytes, mapnamedl, mimetypes);

    UnityWebRequest www = UnityWebRequest.Post("https://test.com/car/hariupload/save.php", postForm);
    yield return www.SendWebRequest();

    if (www.isNetworkError || www.isHttpError)
    {
        Debug.Log(www.error);
    }
    else
    {
        string JSONDATAstring = www.downloadHandler.text;
        Debug.Log("Json String is = " + JSONDATAstring);
        JSONNode JNode = SimpleJSON.JSON.Parse(JSONDATAstring);

        string login = (JNode["upload"][0]["success"]).ToString();

        Debug.Log("login is = " + login);

        if (login == "1")
        {
            Debug.Log("Form upload complete!");
        }
        else if (login == "0")
        {
            Debug.Log("Failed ");
        }
    }
}

1 Ответ

0 голосов
/ 07 мая 2019

+ если у вас есть бинарные (не алфавитно-цифровые) данные (или полезные данные значительного размера) для передачи, используйте multipart / form-data. В противном случае используйте application / x-www-form-urlencoded.

- если вам нужно отправить не-ASCII текст или большие двоичные данные, данные формы предназначены для этого.

Вы можете использовать Raw, если хотите отправить обычный текст, JSON или любой другой вид строки. Как следует из названия, почтальон отправляет ваши необработанные строковые данные без изменений. Тип отправляемых данных можно установить с помощью заголовка типа содержимого из выпадающего списка.

Двоичные данные можно использовать, когда вы хотите прикрепить к запросу нетекстовые данные, например, видео / аудио файл, изображения или любой другой файл двоичных данных.

подробности: документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...