это снова я.
Я учусь реагировать на нативный, сейчас я пытаюсь загрузить файл, API уже протестирован с помощью почтальона, и он работает, поэтому я написал этот код:
import * as DocumentPicker from 'expo-document-picker';
async login () {
let response = await DocumentPicker.getDocumentAsync({type: '*/*'})
const data = new FormData();
data.append('file', response)
// Fetch attempt ----------------------------------------
fetch("http://192.168.0.3:8000/api/file", {
method: "POST",
headers:{
"Content-Type": "application/x-www-form-urlencoded",
},
body: data
})
.then(response => response.json())
.then(response => {
console.log("upload succes", response);
})
.catch(error => {
console.log("upload error", error, JSON.stringify(error));
});
// Axios attempt ----------------------------------------
axios.post('http://192.168.0.3:8000/api/file', data, { headers:{ "Content-Type": "application/x-www-form-urlencoded"} } )
.then(res => {
console.log("goddaamittt wooork", res)
})
.catch(error => {
console.log("error", error, JSON.stringify(error))
});
}
Когда я удаляю тело и заголовки из этого запроса, он на самом деле возвращает то, что должен вернуть API, когда вы пытаетесь выполнить POST к нему без «файла», какое-то сообщение «{'fileName»: «Требуется файл»} "но добавляя его к этому, я получаю сетевую ошибку, ошибку, которую я получаю при использовании извлечения:
upload error [TypeError: Network request failed] {"line":24646,"column":31,"sourceURL":"http://127.0.0.1:19001/node_modules/expo/AppEntry.bundle?platform=android&dev=true&minify=false&hot=false"}
когда он достигает попытки axios, он говорит что-то вроде этого:
[Unhandled promise rejection: TypeError: Network request failed]
Я перепробовал все, что знал, мне нужна помощь!
ИДК, если это важно, но вот что возвращает DocumentPicker, когда я выбираю файл:
Object {
"name": "FB_IMG_1573232116651.jpg",
"size": 32482,
"type": "success",
"uri": "file:///data/user/0/host.exp.exponent/cache/ExperienceData/%2540anonymous%252Fjsonplaceholder-bcb4c1c6-b37d-4634-99a5-3410d9b8654e/DocumentPicker/db8d78dd-2587-40e4-aed9-656c36df29f4.jpg",
}
Это ошибка, которую яполучить, когда я удаляю тело из запроса axios
ошибка [Ошибка: запрос не выполнен с кодом состояния 400] {"config": {"transformRequest": {}, "transformResponse": {},"headers": {"Accept": "application / json, text / plain, / "}, "timeout": 0," xsrfCookieName ":" XSRF-ЗНАК " "xsrfHeaderName": "X-XSRF-ЗНАК", "maxContentLength": - 1, "метод": "пост", "URL":" http://192.168.0.3:8000/api/file"},"response":{"data":{"message":"File требуется "}," status ": 400," headers ": {" map ": {" cache-control ":" public, max-age = 0 "," x-robots-tag ":" noindex ", "x-debug-token-link": "http://192.168.0.3:8000/_profiler/54e68c","x-debug-token":"54e68c","link":" http://192.168.0.3:8000/api/docs.jsonld; rel = \ "http://www.w3.org/ns/hydra/core#apiDocumentation\"","content-type":"application/json","x-powered-by":"PHP/7.2.4","connection":"close","date":"Fri, 08 ноя. 2019 17:54: 12 GMT "," host ":" 192.168.0.3:8000"‹‹ ,"config":ndom"transformRequest":ndom‹,"transformResponse":ndom‹,"headers": enj"Accept":"application/json, text / plain, /"}," timeout ": 0," xsrfCookieName ":" XSRF-TOKEN "," xsrfHeaderName ":" X-XSRF-TOKEN "," maxContentLength ": - 1, "method": "post", "url": "http://192.168.0.3:8000/api/file"},"request":{"url":" http://192.168.0.3:8000/api/file","credentials":"omit","headers":{"map":{"accept":"application/json, text / plain, /"}}, "метод": "POST", "режим": NULL, "ссылающаяся": NULL, "_ Bodytext": ""}}, "линии": 178773, "колонна": 26, "sourceURL": "http://127.0.0.1:19001/node_modules/expo/AppEntry.bundle?platform=android&dev=true&minify=false&hot=false"}