reactjs - 如何在反应中将文件上传到后端
问题描述
我正在尝试使用 react 作为前端将文件上传到我的后端程序。后端在 Postman 中运行良好。但是当我尝试通过反应上传它时,它不允许上传。同时我能够从后端获取文件并显示它以供下载。以下是我的上传代码:
const[selectedFiles,setSelectedFiles] = useState(undefined)
const[file,setFile] = useState(undefined)
const[progress,setProgress] = useState(0)
const[message,setMessage] = useState("")
const[fileInfos,setFileInfos] = useState([])
...
const uploadFile = async () => {
setFile(selectedFiles[0])
let formData = new FormData()
formData.append('file',file)
await axios.post("http://localhost:8080/upload",formData)
.then(response => {
setMessage(response.data.message)
return UploadFilesService.getFiles()
})
.catch(err => {
setProgress(0)
setMessage("Unable to upload the file at the moment")
setFile(undefined)
})
setSelectedFiles(undefined)
}
...
<label className="btn btn-default">
<input type="file" onChange={(e) => setSelectedFiles(e.target.files)} />
</label>
<button className="btn btn-success"
disabled={!selectedFiles}
onClick={uploadFile}
>
Upload
</button>
尝试上传时,控制台中出现以下错误消息:
xhr.js:177 POST http://localhost:8080/upload 400
dispatchXhrRequest @ xhr.js:177
xhrAdapter @ xhr.js:13
dispatchRequest @ dispatchRequest.js:52
Promise.then (async)
request @ Axios.js:61
Axios.<computed> @ Axios.js:87
wrap @ bind.js:9
uploadFile @ FileUpload.js:36
callCallback @ react-dom.development.js:3945
invokeGuardedCallbackDev @ react-dom.development.js:3994
invokeGuardedCallback @ react-dom.development.js:4056
invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js:4070
executeDispatch @ react-dom.development.js:8243
processDispatchQueueItemsInOrder @ react-dom.development.js:8275
processDispatchQueue @ react-dom.development.js:8288
dispatchEventsForPlugins @ react-dom.development.js:8299
(anonymous) @ react-dom.development.js:8508
batchedEventUpdates$1 @ react-dom.development.js:22396
batchedEventUpdates @ react-dom.development.js:3745
dispatchEventForPluginEventSystem @ react-dom.development.js:8507
attemptToDispatchEvent @ react-dom.development.js:6005
dispatchEvent @ react-dom.development.js:5924
unstable_runWithPriority @ scheduler.development.js:646
runWithPriority$1 @ react-dom.development.js:11276
discreteUpdates$1 @ react-dom.development.js:22413
discreteUpdates @ react-dom.development.js:3756
dispatchDiscreteEvent @ react-dom.development.js:5889
解决方案
让我们检查一下
submit(){
const data = new FormData()
data.append('file', this.state.selectedFile)
console.warn(this.state.selectedFile);
let url = "http://localhost:8000/upload.php";
axios.post(url, data, { // receive two parameter endpoint url ,form data
})
.then(res => { // then print response status
console.warn(res);
})
}
如果您的问题无法解决,请随时再次询问。
拉明血红蛋白
推荐阅读
- django - Django Query 查询中对象的第一个 ForeignKey
- mysql - mysql:日期的降序
- google-maps - 如何在flutter中从firestore的地图上显示标记?
- javascript - 未捕获的 SyntaxError:脚本中的令牌无效或意外
- twos-complement - 如何用二进制表示负数
- c# - 在 TableLayoutPanel 中动态添加控件
- javascript - 如何在 Typescript 中减去两个只读数组
- python - 使用 Python subproc 调用获取语法错误
- angular - 如何将此 Javascript 代码传递给 Typescript?它来自一个琐事(API)
- sqlite - 有没有办法提取sqlite db文件A中的表a和sqlite db文件B中的表b之间的差异?