μ΅μ’ λ°°ν¬ λ§ν¬
μλ¬ νΈλ€λ§
λ°±μλμ μ°κ²°μ λ§μ³€μ λμ―€, λ°±μλμ νλ‘ νΈμλ μμ μ΄ λͺ¨λ μλ£λμλ€.
κ·Έλ¬λ, λͺ¨λΈμ μ¬μ§μ μ λ‘λ νλ λΆλΆμμ κ³μ μ μ λ‘λκ° λμ§ μμ λ€μκ³Ό κ°μ μλ¬λ€μ΄ λ°μνλ€.
1. 413 μλ¬
첫λ²μ§Έλ, μ΄λ―Έμ§ μ λ‘λ μ, base64λ‘ μΈμ½λ© λ κ°μ΄ μ μ‘λλ©΄μ λ°μν 413 μλ¬μλ€. 413 μλ¬λ λ§μ΄ λ³Έ κ²½νμ΄ μλ ν°λΌ, μμΉν΄ 보μλλ°, ν΄λΉ μλ¬κ° λ°μν μ΄μ λ μ΄λ―Έμ§κ° λ무 μ»ΈκΈ° λλ¬Έμ΄μλ€.
Nginxμμ κΈ°λ³Έμ μΌλ‘ μμ² μν°ν°μ ν¬κΈ°λ 1MBλ‘ μ νμ΄ λμ΄ μκΈ° λλ¬Έμ, 1MBκ° λλ μ΄λ―Έμ§λ₯Ό μ λ‘λνμ λ 413 μλ¬κ° λ°μνλ κ²μ΄λ€.
μ΄μ, μ΅λ 50MBκΉμ§ μ λ‘λν μ μλλ‘ nginx μ€μ μ λ³κ²½νλ€.
http {
client_max_body_size 50M;
...
}
2. base64 μΈμ½λ© μλ¬
client μΈ‘μμ μ΄λ―Έμ§λ₯Ό μ λ‘λν λ, μ΄λ€ μ΄μ μμμλμ§ κ³μ CORS μλ¬κ° λ°μνλ€.
κ·Έλμ μ λ‘λ μ μμ±λ api μ½λλ₯Ό 보μλλ, λ€μκ³Ό κ°μλ€.
export const predictAPI = {
POST_PREDICT: async (image: string, accessToken: string): Promise<any> => {
// console.log(image);
const base64Data = image.split(',')[1];
const formData = new FormData();
formData.append('image', base64Data);
const response = await client.post(`/predict`, formData, {
headers: {
JWT: `${accessToken}`,
'Content-Type': 'multipart/form-data',
},
});
return response.data;
};
export default predictAPI;
ν΄λΉ μ½λλ testμ μ€ν¨ν΄λ μμΈ μμ΄ κ²°κ³Όκ°μ λ°ννκ³ , μ΄ν νλ‘ νΈ μΈ‘μμλ κ²°κ΄κ°μ΄ λμ€λ©΄ λ€λ₯Έ νμ΄μ§λ‘ λμ΄κ°λλ‘ μ€κ³νκΈ° λλ¬Έμ κ²°κ΄κ°μ΄ μλ μ±λ‘ κ²°κ³Όνμ΄μ§λ‘ μ΄λνλ μλ¬κ° λ°μνλ€. μ΄μ λλ μ½λλ₯Ό λ€μκ³Ό κ°μ΄ λ³κ²½νλ€
export const predictAPI = {
POST_PREDICT: async (image: string, accessToken: string): Promise<any> => {
// console.log(image);
const base64Data = image.split(',')[1];
const formData = new FormData();
formData.append('image', base64Data);
try {
const response = await client.post(`/predict`, formData, {
headers: {
JWT: `${accessToken}`,
'Content-Type': 'multipart/form-data',
},
});
// console.log(response);
return { isSuccess: response.data.isSuccess, data: response.data };
} catch (err: any) {
// console.log(err.response.data);
return { isSuccess: err.response.data.isSuccess, data: err.response.data.message };
}
}
}
μ΄λ κ², ν μ€νΈκ° μ€ν¨νμ¬ μλ¬κ° λ°μνμ κ²½μ°, μλμ μΌλ‘ reloadνμ¬ λ€μ ν μ€νΈν μ μκ² λ‘μ§μ λ³κ²½νλ€.
λ§λ¬΄λ¦¬
μ΄λ κ², μ½ 2κ°μ κ° μ²μ μλν΄λ³Έ ai νλ‘μ νΈκ° λλ¬λ€. λ¬Όλ‘ chatGPTμ λμμ λ§μ΄ λ°μμ§λ§, μ²μμΌλ‘ λ°μ΄ν°λ₯Ό μμ§νμ¬ μ μ²λ¦¬νκ³ , μ§μ νμ΅μμΌ λ°±μλκΉμ§ μ°κ²°ν΄ λ΄€λ€λ μ μμ μ λ§ λΏλ―νλ νλ‘μ νΈμλ κ² κ°λ€.
λ€λ§ μμΈμ§ vision λΆμΌμμ κΈ°λνλ μ¬λ―Έ(?)κ° λκ»΄μ§μ§ μμλ€. λ무 κΈνκ² ν΄μμΈμ§, λ΄κ° μ λ§ vision λΆμΌμ κ΄μ¬μ΄ μλ κ²μΈμ§ μμ λͺ¨λ₯΄κ² μ§λ§, λ€λ₯Έ λΆμΌμ νλ‘μ νΈλ νλ² ν΄λ³΄κ³ μΆμ΄μ‘λ€.
μλ¬΄νΌ μ°λ¦¬ νμλ€ λͺ¨λ κ³ μνλ€ !!!
'π» νλ‘μ νΈ > π§Έ TOY-PROJECTS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ν μ΄νλ‘μ νΈ-κ³΅κ° μ±λ΄] νλ‘μ νΈ κ°μ (0) | 2023.07.05 |
---|---|
[DeepLook] 5. λ°±μλ μ°κ²° (0) | 2023.06.21 |
[DeepLook] 4. λͺ¨λΈ μ μ λ° νμ΅ (0) | 2023.06.21 |
[DeepLook] 3. μ μ²λ¦¬ (haar-cascade μκ³ λ¦¬μ¦) (0) | 2023.06.20 |
[DeepLook] 2. AI μμ μ€κ³ κ³Όμ / ν¬λ‘€λ§ (0) | 2023.06.20 |