Да, это можно сделать, но важно понимать одно ограничение: **браузерный JavaScript** (который вы используете в Playground) из соображений безопасности не может напрямую обращаться к файлам на вашем жестком диске без участия пользователя.
Чтобы реализовать вашу задумку, нужно добавить HTML-элементы для выбора файла и кнопку для скачивания результата.
Вот как нужно изменить ваш код:
### 1. Добавьте HTML (в поле под кодом или рядом)
Если сервис позволяет редактировать HTML, добавьте это:
```html
<input type="file" id="fileInput" accept=".txt">
<button onclick="makeRequest()">Запустить обработку</button>
```
### 2. Обновленный JavaScript код
Этот код считывает выбранный файл, отправляет его содержимое в API и предлагает скачать результат в виде нового файла.
```javascript
const proxy = "https://cors-anywhere.herokuapp.com/";
const apiUrl = "https://openrouter.ai/api/v1/chat/completions";
async function makeRequest() {
const fileInput = document.getElementById('fileInput');
if (fileInput.files.length === 0) {
alert("Пожалуйста, выберите файл!");
return;
}
const file = fileInput.files[0];
// 1. Читаем текст из файла
const fileText = await file.text();
console.log("Файл прочитан, отправка запроса...");
try {
const response = await fetch(proxy + apiUrl, {
method: "POST",
headers: {
"Authorization": "Bearer sk-or-v1-20509f8ca65def14af05f67ac45d42fc48246e5b21579f8", // Внимание: ваш ключ виден на скриншоте, лучше его отозвать!
"Content-Type": "application/json",
"X-Requested-With": "XMLHttpRequest"
},
body: JSON.stringify({
"model": "google/gemini-3-flash-preview",
"messages": [
{ "role": "user", "content": "Проанализируй этот текст и дай ответ: " + fileText }
]
})
});
const result = await response.json();
const aiResponse = result.choices[0].message.content;
console.log("Ответ получен, сохраняю в файл...");
// 2. Создаем файл из ответа и скачиваем его
downloadResult(aiResponse, "response.txt");
} catch (error) {
console.error("Ошибка:", error);
}
}
// Функция для сохранения текста в файл на ПК пользователя
function downloadResult(text, filename) {
const blob = new Blob([text], { type: "text/plain" });
const url = window.URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = filename;
a.click();
window.URL.revokeObjectURL(url);
}
```
<details>
<summary><strong>Как это работает (важные детали)</strong></summary>
1. **Чтение файла:** Метод `file.text()` превращает содержимое выбранного вами `.txt` файла в строку, которую мы подставляем в `messages`.
2. **Запись в файл:** Поскольку JS в браузере не может "тихо" записать файл на диск `C:\`, он создает виртуальную ссылку на скачивание (Blob) и программно "кликает" по ней. У вас в браузере просто начнется загрузка файла `response.txt`.
3. **Безопасность:** Ваш API-ключ попал на скриншот. Любой человек, увидевший его, может тратить ваши деньги/квоты. Рекомендую зайти в панель OpenRouter и перевыпустить его (создать новый, а старый удалить).
</details>
**Примечание:** Если вы хотите делать это автоматически (без кнопок и окон выбора) в фоновом режиме, вам нужно использовать не браузерный "JavaScript Playground", а **Node.js** установленный на компьютер. Там можно работать с файловой системой напрямую через модуль `fs`.