vue.js - 如何将上传文件类型转换为 graphql UploadFile 类型?
问题描述
我尝试在使用 vue.js 构建的客户端将图像上传到服务器,但我一直都有错误。我尝试使用 formData 发送请求,尝试直接使用文件列表对象,使用文件对象。
但似乎没有什么是好的。
我的表格
<form enctype="multipart/form-data">
<input
@change="uploadPhoto($event)"
accept="image/*"
ref="file"
type="file"
name="files"
id="files"
class="inputfile inputfile-upload"
capture="user"
>
</form>
我的上传功能
uploadPhoto({ target }) {
const formData = new FormData()
formData.append('files', target.files)
HTTP.post('/graphql', {
query: `
mutation UploadFile($file: Upload!) {
upload(file: $file) {
id
hash
url
}
}
`,
variables: {
file: formData,
},
})
},
显示错误:
{"errors":[{"message":"The \"path\" argument must be one of type string, Buffer, or URL. Received type undefined"
谢谢你的帮助。
解决方案
假设您正在使用graphql-upload
(以前apollo-upload-server
)或apollo-server
(在后台graphql-upload
使用),您应该使用支持 GraphQL Multipart 规范的客户端。
如果您使用的是 Vue,使用适当的 Link设置 Apollo 是最简单的。
示例用法:
const { ApolloClient } = require('apollo-client')
const { InMemoryCache } = require('apollo-cache-inmemory')
const { createUploadLink } = require('apollo-upload-client')
const client = new ApolloClient({
cache: new InMemoryCache(),
link: createUploadLink()
})
有关其他详细信息,请参阅文档。
推荐阅读
- printing - iOS 13 AirPrint 问题:可以打印一次到 UIPrinter,随后出现控制台错误,例如 Print-Job failed: Printer not found
- c# - " "这里不允许,因为它没有扩展类 'System.Web.UI.Page'
- json - 在 IE 中将 JSON 显示为 HTML 而无需下载
- html - 我无法通过打开 HTML 文件看到我的 D3.js 设计
- sql - 多张同形桌子的ERD设计
- go - 如何临时从基础 github repo 导入到它的 fork?
- c - TCP IP 标头格式错误的数据包
- django - 我在管理站点中创建了自定义按钮并单击它转到查看 get_changeform_initial_data() 函数并在表单中放置一些静态值
- java - 如何以 JSON 格式返回信息
- codeigniter - 如何在视图解析器中访问循环项的属性?