如何使用上传的图像 url 注入输入字段以及如何将带有表单的 url 提交到 mongodb?
Posted
技术标签:
【中文标题】如何使用上传的图像 url 注入输入字段以及如何将带有表单的 url 提交到 mongodb?【英文标题】:how to inject the input field with the uploaded image url and how to submit the url with the form to mongodb? 【发布时间】:2021-11-19 23:12:15 【问题描述】:免责声明:这不是另一个帖子的复制品,我正在尝试一种不同的方法来解决这个问题。 问题:cloudinary 最近上传的图像会覆盖所有显示的图像 目标:将上传的图片 url 与表单一起提交到后端(用户选择图片和输入字段自动填充),在后端我将能够检索与 mongodb id 相关的图片 url到表单数据,所以我每次上传图片时都会用不同图片的 url 注入 img 标签 应用程序的设置方式:我有一个表格和。 GUI 来显示数据。表单存储在(状态)内部,我正在使用 Cloudinary 上传图像,这些图像将上传的图像存储在称为(图像)的不同状态中。到目前为止,我已经设法获取上传图片的网址,但我需要一种方法将其与表单一起提交
有什么想法吗??
form
<form onSubmit=props.handleSubmit >
<div >
<div >
<label >Track name<input name="track" value=props.state.newTrack.track onChange=props.handleChange /></label>
</div>
<div >
<label >Artist name<input name="artist" value=props.state.newTrack.artist onChange=props.handleChange /></label>
</div>
<div >
<label >album<input name="album" value=props.state.newTrack.album onChange=props.handleChange /></label>
</div>
<div >
<label > Year<input name="year" value=props.state.newTrack.year onChange=props.handleChange /></label>
</div>
<div >
<label >URL<input name="url" value=props.image value=props.state.newTrack.url onChange=props.handleSubmit /></label>
</div>
<div >
<label > Upload<input name="url" type="file"
// value=props.state.newTrack.url
onChange=(e) =>
setImageSelected(e.target.files[0]);
/>
</label>
</div>
<button class="formdiv" onClick=uploadImage > props.state.editMode ? 'Edit ' : 'Add '</button>
</div>
</form>
cloudinary upload image function
const [imageSelected, setImageSelected] = useState('');
console.log(imageSelected)
const uploadImage = () =>
const formData = new FormData()
formData.append('file', imageSelected)
formData.append('upload_preset', 'musicimages')
Axios.post(
' https://api.cloudinary.com/v1_1/dklcmfo0q/image/upload', formData)
.then((res) =>
props.setImage(res.data.url);
)
;
function create track
function createTrack(data)
return fetch(BASE_URL,
method:'POST',
headers:
'Content-type' : 'Application/json'
,
body: JSON.stringify(data)
).then(res => res.json())
设置轨道状态
const track = await createTrack(state.newTrack); // console.log(image)
setState(
tracks: [...state.tracks, track],
newTrack:
track: "",
artist:"",
album: "",
year:"",
url:""
)
【问题讨论】:
【参考方案1】:确保您使用fd.append(‘file’, imageSelected);
上传的文件 imageSelected 是文件对象,而不仅仅是文件名。
您可以通过记录来验证。这是一些可能有帮助的示例 vanilla JS。 https://codepen.io/team/Cloudinary/pen/QgpyOK
【讨论】:
我不认为这对我有用,我的问题是我有一个从表单获取数据的状态,当用户提交所有数据时,所有数据都存储在 mongodb 中并显示在屏幕上,在该表单中,我想使用 cloudinary 上传图像,将响应 url 与状态一起作为 url 字符串发送,这样它就会显示出来。以上是关于如何使用上传的图像 url 注入输入字段以及如何将带有表单的 url 提交到 mongodb?的主要内容,如果未能解决你的问题,请参考以下文章