39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
import axios from 'axios';
|
||
import CONFIG from '@/core/config.js';
|
||
|
||
const uploadProjectFile = async (projectId, file) => {
|
||
try {
|
||
const token = localStorage.getItem('access_token');
|
||
|
||
const formData = new FormData();
|
||
formData.append("file", file);
|
||
|
||
const response = await axios.post(
|
||
`${CONFIG.BASE_URL}/project_files/projects/${projectId}/upload`,
|
||
formData,
|
||
{
|
||
headers: {
|
||
"Content-Type": "multipart/form-data",
|
||
Authorization: `Bearer ${token}`,
|
||
},
|
||
withCredentials: true,
|
||
}
|
||
);
|
||
return response.data;
|
||
} catch (error) {
|
||
const errorMessage = error.response?.data?.detail || error.message;
|
||
console.error(`Ошибка загрузки файла проекта с ID ${projectId}:`, errorMessage);
|
||
if (error.response?.status === 401) {
|
||
throw new Error("Недостаточно прав для загрузки файла (401)");
|
||
}
|
||
if (error.response?.status === 400) {
|
||
throw new Error(`Ошибка загрузки: ${errorMessage}`);
|
||
}
|
||
if (error.response?.status === 404) {
|
||
throw new Error("Проект не найден (404)");
|
||
}
|
||
throw new Error(errorMessage);
|
||
}
|
||
};
|
||
|
||
export default uploadProjectFile; |