๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

FA/React

20221024 input type="file" ์šฉ๋Ÿ‰ ์ œํ•œํ•˜๊ธฐ

 

1. ํ”„๋กœ์ ํŠธ์—  ์‚ฌ์šฉ์ž๊ฐ€ ๋™์˜์ƒ ์—…๋กœ๋“œ๋ฅผ ํ•˜๋ ค๋ฉฐ ๋ฐฑ์—”๋“œ์™€ ์„œ๋กœ ๋™์˜์ƒ ํฌ๊ธฐ๋ฅผ 200๋ฉ”๊ฐ€๋กœ ์ œํ•œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ๋กœ ํ•˜์˜€์Œ.

 

2. ํผ๋ฐ์ดํ„ฐ๋ฅผ ํฌ์ŠคํŠธ๋กœ ๋ณด๋‚ด๋Š”๋ฐ, ๋“ฑ๋ก๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„๋•Œ 200๋ฉ”๊ฐ€๊ฐ€ ๋„˜์œผ๋ฉด ์•Œ๋Ÿฟ์œผ๋กœ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์งœ๋ด„.

 

3. ์ฝ˜์†”์ฐ์–ด๋ด๊ฐ€๋ฉฐ ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๊ฐ€ ํ‚ฌ๋กœ๋ฐ”์ดํŠธ๋กœ ๋‚˜์˜จ๋‹ค๋Š” ๊ฑธ ํ™•์ธํ•˜๊ณ , 200๋ฉ”๊ฐ€๋ฅผ ํ‚ฌ๋กœ๋ฐ”์ดํŠธ๋กœ ๋ฐ”๊พธ๊ณ  maxFileSize๋กœ ์„ ์–ธํ•ด์ค€ ๋‹ค์Œ ๋น„๋””์˜ค์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ maxFileSize๋ณด๋‹ค ํด ๊ฒฝ์šฐ ์•Œ๋Ÿฟ์ฐฝ์œผ๋กœ ์•Œ๋ ค์คŒ. (๋“ฑ๋ก๋ถˆ๊ฐ€)

 

 // ๋™์˜์ƒ 200MB ํฌ๊ธฐ ์ œํ•œ
  const [errorMsg, setErrorMsg] = useState(false);
  const [isSuccess, setIsSuccess] = useState(false);
  const validateSelectedFile = (e) => {
    const maxFileSize = 204800; // 200MB
    const fileSizeKiloBytes = videos.size / 1024;

    if (fileSizeKiloBytes > maxFileSize) {
      setErrorMsg(
      //200๋ฉ”๊ฐ€ ๋„˜์„ ์•Œ๋Ÿฟ๋„์šฐ๊ธฐ ๋‚œ ์Šค์•Œ2๋กœ ๋„์šฐ๊ธฐํ•ด๋‘ 
        Swal.fire({
          icon: "error",
          text: "์—…๋กœ๋“œ ๊ฐ€๋Šฅํ•œ ์šฉ๋Ÿ‰(200MB)์„ ์ดˆ๊ณผํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ์„ ํƒํ•ด ์ฃผ์„ธ์š”.",
          confirmButtonColor: "#47AFDB",
          confirmButtonText: "ํ™•์ธ",
        }).then((result) => {
          if (result.isConfirmed) {
            window.location.reload();
          }
        })
      );
      setIsSuccess(false);
      return;
    }

    setErrorMsg("");
    setIsSuccess(true);
  };

 

 

            <form onSubmit={onSubmitHandler}>
              <div className="AddVideo">
                <div className="btn-container">
                  <input
                    accept="video/*"
                    name="videos"
                    type="file"
                  />
                  <div className="btn">
                    <img src={video} alt="์˜์ƒ์„ ์—…๋กœ๋“œ ํ•ด์ฃผ์„ธ์š”." />
                  </div>
                </div>
                <div className="error-message">{errorMsg}</div>
              </div>
              <div className="videoAddbuttons">
              //๋ฒ„ํŠผํด๋ฆญ์‹œ ์˜จํด๋ฆญ์ด๋ฒคํŠธ๋กœ ํ™•์ธํ•ด์ฃผ๊ธฐ~
                <button
                  className="videoAdd"
                  type="submit"
                  onClick={validateSelectedFile}>
                  <img src={addVideo} alt="์˜์ƒ๋“ฑ๋ก" />
                </button>
              </div>
            </form>

'FA > React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

20221103 React - ๊ฐ€์ƒ๋” (Virtual DOM)  (0) 2022.11.03
20221102 React Hooks - useMemo, useCallback  (0) 2022.11.02
20221008 video ์‚ฌ์šฉํ•˜๊ธฐ  (0) 2022.10.08
20221006 react JSX์—์„œ for์˜ค๋ฅ˜  (0) 2022.10.06
20221005 React Hooks - useContext  (0) 2022.10.05