如何写通过uni.uploadFile上传图片到ASP后端接收的代码,我下面的代码报错了。不懂如何写,请教下。我想要的是ASP的后端代码,而不是asp.net的后端代码,我引用了无惧无组件上传类
我的前端代码:
bb16(e) {
uni.chooseImage({
count: 9,
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
success: function(res) {
console.log(res.tempFilePaths[0])
uni.uploadFile({
url: 'http://localhost/app/1.asp?id1=7', // 后端api接口
filePath: res.tempFilePaths[0], // uni.chooseImage函数调用后获取的本地文件路劲
name: 'file', //后端通过'file'获取上传的文件对象
success: (res) => {
console.log(res)
},
fail: (err) => {
console.log('uploadImage fail', err);
console.log(err.data)
uni.showModal({
content: err.errMsg,
showCancel: false
});
}
})
}
})
},
我的ASP后端接收代码:
sub a7()
FormSize=Request.TotalBytes'TotalBytes 属性指定客户端在请求正文中发送的总字节数
FormData=Request.BinaryRead(FormSize)
CLStr=ChrB(13)&ChrB(10)
DataStart=InStrB(FormData.CLStr&CLStr)+4
'4是两对回车换⾏符的长度
后面不懂了。。。
end sub
回答如下,有帮助的话采纳一下哦!
前端代码看起来似乎没有问题。检查一下后端代码中 Request.Files("file") 是否能够正确获取上传的文件,可以在后端代码中添加一些调试信息,例如打印出 Request.Files.Count 的值,确保文件已经成功上传。
另外需要确保保存文件的路径是正确的,"D:\text"在windows是"D:\\text"吧,可以将保存文件的路径更改为类似于以下形式:
uploadFile.SaveAs("D:\\text\\" & fileName)
linux中路径是:
uploadFile.SaveAs("D:/text/" & fileName)
并且服务器上有足够的权限来保存文件。
根据您提供的代码,有以下几个问题需要解决:
前端代码中的 url 路径是否正确?
ASP 后端代码中的上传路径是否正确,是否有足够的权限保存文件到该路径下?
是否需要对上传的文件类型和大小进行限制?
是否需要对上传的文件名进行处理?
下面给出一个简单的示例代码:
前端代码:
bb16(e) {
uni.chooseImage({
count: 9,
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
success: function(res) {
console.log(res.tempFilePaths[0])
uni.uploadFile({
url: 'http://localhost:端口号/upload.asp', // 后端api接口
filePath: res.tempFilePaths[0], // uni.chooseImage函数调用后获取的本地文件路劲
name: 'file', //后端通过'file'获取上传的文件对象
success: (res) => {
console.log(res)
},
fail: (err) => {
console.log('uploadImage fail', err);
console.log(err.data)
uni.showModal({
content: err.errMsg,
showCancel: false
});
}
})
}
})
},
后端 ASP 代码:
<%
dim fileName
dim fileSavePath
dim fileSize
dim uploadFile
' 上传文件存储路径
fileSavePath = Server.MapPath("upload/")
' 获取上传文件信息
set uploadFile = Request.Files("file")
fileName = uploadFile.FileName
fileSize = uploadFile.Size
' 对上传文件名进行处理
fileName = Replace(fileName, "/", "")
fileName = Replace(fileName, "", "")
fileName = Replace(fileName, ":", "")
fileName = Replace(fileName, "*", "")
fileName = Replace(fileName, "?", "")
fileName = Replace(fileName, "<", "")
fileName = Replace(fileName, ">", "")
fileName = Replace(fileName, "|", "")
' 保存上传文件
if fileSize > 0 then
uploadFile.SaveAs(fileSavePath & fileName)
end if
%>
注意事项:
前端代码中的 url 需要替换成实际的后端接口路径,且需要在后面加上 ASP 程序文件的扩展名(.asp)。
后端代码中的上传文件存储路径需要根据实际情况进行修改,保证有足够的权限保存文件。
上传文件大小和类型的限制可以在前端和后端都进行处理,具体实现方法可参考官方文档。
为了防止上传文件名中包含非法字符导致保存失败,可以对文件名进行处理,例如将非法字符替换为下划线。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
根据您提供的代码,可能出错的地方是ASP后端接收代码,ASP代码中的文件保存路径错误,应该改为:
uploadFile.SaveAs(Server.MapPath("text/") & fileName)
其中, "text/" 是保存文件的文件夹路径,需要在ASP网站的根目录下创建这个文件夹。
完整的前端代码如下:
uni.chooseImage({
count: 1,
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
success: function(res) {
uni.uploadFile({
url: 'http://localhost/app/1.asp?id1=7', // ASP后端接口
filePath: res.tempFilePaths[0], // 本地文件路径
name: 'file',
formData: {
'id3': 'xxx' // 其他表单数据
},
success: function (res) {
console.log(res);
},
fail: function (err) {
console.log(err);
}
});
}
});
相应的ASP后端接收代码可以按照您已经提供的代码进行调整。
希望能对您有所帮助。
如果我的回答解决了您的问题,请采纳!
bb16(e) {
uni.chooseImage({
count: 9,
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
success: function(res) {
console.log(res.tempFilePaths[0])
uni.uploadFile({
url: 'http://localhost/app/upload.asp?id3=7', // 修改为ASP后端接口的地址
filePath: res.tempFilePaths[0],
name: 'file',
success: (res) => {
console.log(res)
},
fail: (err) => {
console.log('uploadImage fail', err);
console.log(err.data)
uni.showModal({
content: err.errMsg,
showCancel: false
});
}
})
}
})
}
sub upload()
id3 = trim(request("id3"))
Dim uploadFile
Set uploadFile = Request.Files("file")
' 获取上传的文件名
Dim fileName
fileName = uploadFile.FileName
' 获取上传的文件大小
Dim fileSize
fileSize = uploadFile.Size
' 将上传的文件保存到服务器
uploadFile.SaveAs(Server.MapPath("upload/") & fileName) ' 修改保存路径为服务器上的实际路径
end sub
该回答引用ChatGPT:根据你提供的代码,可能出现以下问题:
1 后端接口地址应该使用 HTTPS 协议而不是 HTTP,否则可能会遇到跨域访问的问题。
2 你在前端代码中传递了 id1=7,但在后端接收代码中却使用了 id3 来获取参数,需要确保参数名一致。
3 你在后端接收代码中保存上传的文件时,指定的文件路径可能无法访问或不存在,可以通过检查文件夹是否存在或者更改保存路径解决该问题。
针对以上问题,你可以尝试如下修改后端接收代码:
Sub a7()
Dim id3
id3 = Trim(Request("id3"))
Dim uploadFile
Set uploadFile = Request.Files("file")
' 获取上传的文件名
Dim fileName
fileName = uploadFile.FileName
' 获取上传的文件大小
Dim fileSize
fileSize = uploadFile.Size
' 将上传的文件保存到服务器
Dim savePath
savePath = "D:\text\" & fileName ' 文件保存路径
If Not FSO.FolderExists("D:\text") Then ' 如果文件夹不存在则创建
FSO.CreateFolder("D:\text")
End If
uploadFile.SaveAs(savePath)
End Sub
同时,你需要在 ASP 文件开头添加以下代码,引入文件系统对象:
<%
' 引入文件系统对象
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
%>
如果以上修改无法解决问题,建议在前端代码中打印出具体的错误信息,再进行排查和修改。