laravel - React Native Expo Document Picker Throw Error Call to a member function getClientOriginalExtension() on null
问题描述
我尝试使用 expo-document-picker 选择一个文档并将其发送到我的后端,使用 laravel,当我尝试使用邮递员时一切正常,但是在使用移动设备时它会抛出一个 getClientOriginalExtension() null 错误,任何解决方案的家伙?谢谢。
这是我获取文档的代码
pickSKL = async () => {
let result = await DocumentPicker.getDocumentAsync({
type: "application/pdf",
copyToCacheDirectory: false,
});
if (result.type !== "cancel") {
this.setState({
uploadSKL: result.uri,
uploadSKLName: result.name,
});
}
};
pickPelunasan = async () => {
let result = await DocumentPicker.getDocumentAsync({
type: "application/pdf",
copyToCacheDirectory: false,
});
if (result.type !== "cancel") {
this.setState({
uploadPelunasan: result.uri,
uploadPelunasanName: result.name,
});
}
};
将文件上传到服务器的功能
const formData = new FormData();
const method = "POST";
formData.append("id_ptsp", idPTSP);
formData.append("id_submenu1", param1);
formData.append("id_submenu2", param2);
formData.append("nama_pengaju", this.state.nama);
formData.append("nis", this.state.nis);
formData.append("nisn", this.state.nisn);
formData.append("jurusan", this.state.jurusan);
formData.append("tahun_lulus", this.state.tahunLulus);
formData.append("nomor_hp", this.state.nomorHP);
formData.append("attachment_skl", this.state.uploadSKL);
formData.append("attachment_bukti_pelunasan",this.state.uploadPelunasan);
const options = {
method,
body: formData,
headers: {
"Content-Type": "multipart/form-data",
},
};
await fetch(ApiUrl.postPengajuanPTSP, options)
.then((response) => response.text())
.then((responseJson) => {
this.setState({ loadingPost: false });
try {
if (responseJson.status !== "error") {
const data = responseJson.result;
this.props.navigation.goBack();
Alert.alert("", data);
}
} catch ({ message }) {
console.error(message);
Alert.alert("", "Error");
}
})
.catch((error) => {
this.setState({ loadingPost: false });
console.error(error);
Alert.alert("", "Error");
});
这是在服务器端获取正文请求
$file = $request->file('attachment_skl');
$file2 = $request->file('attachment_bukti_pelunasan');
$destinationPath = 'file/ptsp';
$jml = \Illuminate\Support\Str::random(9);
$jml2 = \Illuminate\Support\Str::random(9);
$ext=$file->getClientOriginalExtension();
$ext2=$file2->getClientOriginalExtension();
$name='ptsp'.$jml.'.'.$ext;
$name2='ptsp'.$jml2.'.'.$ext2;
$file->move($destinationPath,$name);
$file2->move($destinationPath,$name2);
$url_file = url('file/ptsp').'/'.$name;
$url_file2 = url('file/ptsp').'/'.$name2;
$data = [
'id_ptsp' => $request->id_ptsp,
'id_submenu1' => $request->id_submenu1,
'id_submenu2' => $request->id_submenu2,
'nama_pengaju' => $request->nama_pengaju,
'nis' => $request->nis,
'nisn' => $request->nisn,
'jurusan' => $request->jurusan,
'tahun_lulus' => $request->tahun_lulus,
'nomor_hp' => $request->nomor_hp,
'attachment_skl' => $url_file,
'attachment_bukti_pelunasan' => $url_file2,
'created_at' => Carbon::now()->toDateTimeString(),
];
解决方案
推荐阅读
- android - 应为 BEGIN_OBJECT,但在第 1 行为 STRING
- html - 如何左对齐和垂直对齐标题中的图像并将文本水平保持在 div 的中心
- android-studio - 如何在项目范围内使用 Kotlin ExperimentalUnsignedTypes (AndroidStudio)
- php - 如何在插入其他表中的值时插入值
- python - 如何在不省略单词的情况下读取excel文件?
- html - 如何使伪 :before 的内容与其父元素一起缩进?
- wmic - 从“wmic service get”命令过滤微软服务
- javascript - 在可编辑的选择框中获取当前选定的值
- javascript - 展开折叠 div 而不对导航栏产生任何影响
- javascript - scrollTop 在侧边栏导航 / div 中不起作用