我有一个作业评分系统,因为管理员可以上传文件(问题),学生可以上传他们的解决方案(所有文件都是 PDF)
我在前端使用 Vue + axios,在后端使用 Go + echo。
一切都很顺利,只是有时学生无法上传他们的文件,我尝试重现错误但我不能,而且我将错误写在一个文件中以便以后能够查看。
首先,我使用哈希而不是在 URL 中显示整数 ID
域示例是:https://my-domain/assignment/PqBL7a6BgYreo32
因此,在 Vue 的 created 部分,我正在调用 axios 以从后端获取整个分配记录(包括 ID)并将其保存在 中的变量中数据部分
created() {
api({
method: "GET",
url: "/assignments/assignment",
params: {
assignmentHash: this.$route.params.assignmentHash
}
}).then(response => {
this.assignment = response.data.assignment
})
},
其次在后端,我使用传递的分配哈希检索分配并相应地更新 UI(向用户添加截止日期、总分和其他一些数据 - 所以我确保分配之前被提取学生尝试发送他/她的提交)
之后,当用户尝试上传提交时,我使用在上一步中获取并存储的分配对象
pushSubmission() {
let formData = new FormData()
formData.append("assignmentID", this.assignment.ID)
formData.append("assignmentHash", this.assignment.hash)
formData.append("submissionFile", this.submission.bytes)
api({
method: method,
url: "/assignments/submissions",
data: formData,
}).then(() => {
this.$router.push({name: 'Assignments'})
})
}
并且大多数用户能够正确上传他们的文件而没有任何问题,但有些用户不能,当我尝试检查服务器上的错误日志时,我发现错误发生在assignmentID正在发送的是一个无法解析为 uint 的空字符串 ""
。 strconv.ParseUint: parsing "": invalid syntax
。
那么是什么导致了这个错误出现在一些学生身上,因为它对大部分学生都有效