Измените имя файла при загрузке изображения React-Dropzone с облачным - PullRequest
0 голосов
/ 01 мая 2019

Я использую реагирующую дропзону и облачный сервис для загрузки изображений.

Я уже установил успешную связь между своей учетной записью и моим реактивным проектом, и я могу загружать изображения через мой реактивный проект.

У меня проблемы с настройкой имени файла в реактивном проекте.

Вот фрагмент кода моего реактивного проекта.

Я уже пробовал что-то вроде этого:

    onImageDrop(files) {
        console.log(files)
        var test = JSON.parse(JSON.stringify(files))
        test[0]["name"] = "test"

        this.handleImageUpload(test);
    }

Но я получаю сообщение о том, что файл доступен только для чтения.

Вот рабочий пример того, что у меня есть

onImageDrop(files) {
        this.handleImageUpload(files[0]);
    }

    handleImageUpload(file) {
        let upload = request.post(CLOUDINARY_UPLOAD_URL)
            .field('upload_preset', CLOUDINARY_UPLOAD_PRESET)
            .field('file', file);

        upload.end((err, response) => {
            if (err) {
                console.error(err);
            }
            console.log(response)
        });
    }

    render() {
        return (
            <div>
                <Dropzone
                    onDrop={this.onImageDrop.bind(this)}cloudinary
                    accept="image/*"
                    multiple={false}>
                    {({ getRootProps, getInputProps }) => {
                        console.log("input props", getInputProps)
                        return (
                            <div
                                {...getRootProps()}
                            >
                                <input {...getInputProps()} />
                                {
                                    <p>Try dropping some files here, or click to select files to upload.</p>
                                }
                            </div>
                        )
                    }}
                </Dropzone>
            </div>
        )
    }

Как изменить имя файла перед отправкой в ​​cloudfire?

1 Ответ

0 голосов
/ 03 мая 2019

Вы можете установить имя изображения в Cloudinary при загрузке, установив public_id.

Например:

import React from "react";
import ReactDOM from "react-dom";

import "./styles.css";

class Upload extends React.Component {
  processFile = async e => {
    var file = e.target.files[0];
    var formdata = new FormData();

    formdata.append("file", file);
    formdata.append("cloud_name", "XXXX");
    formdata.append("upload_preset", "XXXX");
    formdata.append("public_id", "my-name1");

    let res = await fetch(
      "https://api.cloudinary.com/v1_1/<Cloud-Name>/auto/upload",
      {
        method: "post",
        mode: "cors",
        body: formdata
      }
    );

    let json = await res.json();
    console.log(JSON.stringify(json.secure_url));
  };

  render() {
    return (
      <div>
        <h3>Upload</h3>
        <input type="file" onChange={this.processFile} />
      </div>
    );
  }
}
ReactDOM.render(<Upload />, document.getElementById("container"));
...