Ios 工作正常 Android = 网络问题
我被困了这么多天 RN 版本 = 0.63.4 Rn 作物选择器版本 = 0.36.1
来自研发 我做了所有的 slotion 就像
这里附上 axios 的代码,图片上传文件
minSdkVersion
我正在使用钩子......我想用路径将多个图像存储在数组中
// import axios from "axios";
// import { SiteUrl } from '../config/Setting';
// var instance = axios.create({
// baseURL: 'http://192.168.1.90:3000/api/v1/user-service/users/',
// timeout: 60000,
// headers: {
// 'Content-Type': 'application/json',
// 'Access-Control-Allow-Origin': '*',
// 'Access-Control-Allow-Headers': '*',
// },
// });
// instance.interceptors.request.use(function (config) {
// console.log('config is ',config)
// return config;
// }, function (error) {
// return error;
// });
// instance.interceptors.response.use(function (response) {
// // console.log('response of axios',response)
// return response;
// }, function (error) {
// console.log('error of axios',error)
// return error;
// })
// export default instance;
import AsyncStorage from '@react-native-async-storage/async-storage';
import axios from 'axios';
import {SiteUrl} from '../config/Setting';
function parseError(messages) {
// error
// console.log('message',messages)
if (messages) {
if (messages instanceof Array) {
return Promise.reject({messages: messages});
} else {
return Promise.reject({messages: [messages]});
}
} else {
return Promise.reject({messages: ['エラーが発生しました']});
}
}
/**
* parse response
*/
function parseBody(response) {
// if (response.status === 200 && response.data.status.code === 200) { // - if use custom status code
// if (response.status === 200) {
return response;
// return response.data.result
// } else {
// console.log('message',response)
// return this.parseError(response.data)
// }
}
/**
* axios instance
*/
let instance = axios.create({
baseURL: 'http://14.98.110.243:3000/api/v1/user-service/users/',
paramsSerializer: function (params) {
return qs.stringify(params, {indices: false});
},
});
// request header
instance.interceptors.request.use(
async config => {
console.log('config is = ', config);
// Do something before request is sent
let apiToken = '';
apiToken = await AsyncStorage.getItem('apiToken');
console.log('apiToken', apiToken);
config.headers = {
Authorization: `Bearer ${JSON.parse(apiToken)}`,
'Content-Type': 'multipart/form-data',
};
return config;
},
error => {
return Promise.reject(error);
},
);
// response parse
instance.interceptors.response.use(
response => {
return parseBody(response);
},
error => {
// console.warn('Error status', error.response.status)
// return Promise.reject(error)
if (error.response) {
return parseError(error.response.data);
} else {
return Promise.reject(error);
}
},
);
export default instance;
const [images, setImages] = useState([]);
答案 0 :(得分:0)
不是专家,但是你在哪里调用上传图片的方法。我使用 Fetch 遇到了这些“网络错误”问题,并使用 Form Data 对象解决了它。这是我的代码:
ImagePicker.openPicker({
multiple: true,
forceJpg: true,
maxFiles: 5,
compressImageQuality: 0.5,
mediaType: 'photo'
})
.then(images =>{
//map of around the pictures and return a form data that will be passed to whole.js
images.map((item, index) => {
this.setState({numberImages: this.state.numberImages + 1})
this.state.formData.append("photo", {
uri: item.path,
type: "image/jpeg",
name: `pickedImage-${index}.jpg`
})
});
});