image fix
parent
0d7cb6f8d1
commit
d0899f178f
4
app.py
4
app.py
|
|
@ -1,4 +1,4 @@
|
||||||
from fastapi import FastAPI, HTTPException, File, UploadFile, Query
|
from fastapi import FastAPI, HTTPException, File, UploadFile, Form
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import datetime
|
import datetime
|
||||||
|
|
@ -289,7 +289,7 @@ async def import_csv(file: UploadFile = File(...), folder_id: int | None = Query
|
||||||
|
|
||||||
# Новый эндпоинт для загрузки изображений
|
# Новый эндпоинт для загрузки изображений
|
||||||
@api_app.post("/api/upload-image")
|
@api_app.post("/api/upload-image")
|
||||||
async def upload_image(install_id: int = Query(..., description="ID записи для ассоциации изображения"), file: UploadFile = File(...)):
|
async def upload_image(install_id: int = Form(...), file: UploadFile = File(...)):
|
||||||
if not file.filename:
|
if not file.filename:
|
||||||
raise HTTPException(status_code=400, detail="No file provided")
|
raise HTTPException(status_code=400, detail="No file provided")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -983,11 +983,14 @@
|
||||||
function uploadImage() {
|
function uploadImage() {
|
||||||
const fileInput = document.getElementById('image-upload-input');
|
const fileInput = document.getElementById('image-upload-input');
|
||||||
const file = fileInput.files[0];
|
const file = fileInput.files[0];
|
||||||
if (!file) return;
|
if (!file || !selectedInstallId) {
|
||||||
|
alert('Пожалуйста, выберите запись и изображение.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append('image', file);
|
formData.append('install_id', selectedInstallId); // Отправляем как часть формы
|
||||||
formData.append('install_id', selectedInstallId);
|
formData.append('file', file); // Отправляем файл
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: `${API_URL}/upload-image`,
|
url: `${API_URL}/upload-image`,
|
||||||
|
|
@ -1009,7 +1012,7 @@
|
||||||
},
|
},
|
||||||
error: function (xhr, status, error) {
|
error: function (xhr, status, error) {
|
||||||
console.error('Error uploading image:', status, error);
|
console.error('Error uploading image:', status, error);
|
||||||
alert(`Не удалось загрузить изображение: ${xhr.responseJSON?.detail || error}`);
|
alert(`Не удалось загрузить изображение: ${xhr.responseJSON?.detail || 'Неизвестная ошибка'}`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -1047,7 +1050,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function closeNoteModal() {
|
function closeNoteModal() {
|
||||||
$('#note-modal').hide(); //
|
$('#note-modal').hide();
|
||||||
$('#modal-overlay').hide();
|
$('#modal-overlay').hide();
|
||||||
$('#note-textarea').val(''); // Очищаем текстовое поле
|
$('#note-textarea').val(''); // Очищаем текстовое поле
|
||||||
selectedInstallId = null; // Сбрасываем выбранный ID
|
selectedInstallId = null; // Сбрасываем выбранный ID
|
||||||
|
|
@ -1106,7 +1109,7 @@
|
||||||
function formatItalic() {
|
function formatItalic() {
|
||||||
const textarea = $('#note-textarea');
|
const textarea = $('#note-textarea');
|
||||||
const start = textarea[0].selectionStart;
|
const start = textarea[0].selectionStart;
|
||||||
end = textarea[0].selectionEnd;
|
const end = textarea[0].selectionEnd;
|
||||||
const text = textarea.val();
|
const text = textarea.val();
|
||||||
const selected = text.substring(start, end);
|
const selected = text.substring(start, end);
|
||||||
const newText = `*${selected}*`;
|
const newText = `*${selected}*`;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue