如何使用上传的图像 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 post 请求异步将图像上传到 url?

如何在节点js中使用单个api保存文本字段值以及文件上传?

如何将图像从 url 沿侧输入类型文件加载到 html5 画布?

如何从用户定义的输入中上传图像以做出反应?

如何将图像上传到 cloudinary

如何按选择的顺序将多个文件上传到 Firebase 存储?