swuecho/chat

file upload

Closed this issue · 8 comments

from flask import Flask, render_template, request
from flask_uploads import UploadSet, configure_uploads, ALL

app = Flask(__name__)

# Configure the upload set and the upload folder
uploads = UploadSet("uploads", ALL)
app.config["UPLOADED_FILES_DEST"] = "uploads"
configure_uploads(app, uploads)

@app.route("/", methods=["GET", "POST"])
def upload_file():
    if request.method == "POST" and "file" in request.files:
        uploaded_file = request.files["file"]
        uploaded_file.save(f"uploads/{uploaded_file.filename}")
        return "File uploaded successfully!"

    return render_template("upload.html")

if __name__ == "__main__":
    app.run(debug=True)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>File Upload</title>
</head>
<body>
  <h1>File Upload</h1>
  <form action="/" method="post" enctype="multipart/form-data">
    <input type="file" name="file" multiple>
    <button type="submit">Upload</button>
  </form>
</body>
</html>

import requests

headers = {
    'Content-Type': 'application/octet-stream',
}

with open('/path/to/your/file.txt', 'rb') as f:
    data = f.read()

response = requests.post('http://localhost:5000/upload', headers=headers, data=data)
from flask import Flask, request

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_data():
    # Get the file content from the request data
    file_content = request.data

    # Process the file content as needed
    # ...

    # Return a response, if needed
    return "File uploaded successfully!"

if __name__ == '__main__':
    app.run(debug=True)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>File Upload</title>
</head>
<body>
    <h2>Upload a File</h2>
    <form id="uploadForm" enctype="multipart/form-data">
        <label for="file">Choose a file:</label>
        <input type="file" name="file" id="file" accept=".txt, .pdf, .doc, .docx"> <!-- specify accepted file types if needed -->
        <br>
        <input type="button" value="Upload" onclick="uploadFile()">
    </form>

    <script>
        function uploadFile() {
            // Get the selected file
            var fileInput = document.getElementById('file');
            var file = fileInput.files[0];

            if (file) {
                // Read the file content
                var reader = new FileReader();
                reader.onload = function(e) {
                    var fileContent = e.target.result;

                    // Create a hidden input field to store the file content
                    var hiddenInput = document.createElement('input');
                    hiddenInput.type = 'hidden';
                    hiddenInput.name = 'fileContent';
                    hiddenInput.value = fileContent;

                    // Append the hidden input to the form
                    var form = document.getElementById('uploadForm');
                    form.appendChild(hiddenInput);

                    // Submit the form
                    form.submit();
                };

                reader.readAsText(file); // You may need to adjust this based on your use case
            }
        }
    </script>
</body>
</html>

// file-upload.service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class FileUploadService {
  constructor(private http: HttpClient) {}

  uploadFile(file: File) {
    const formData: FormData = new FormData();
    formData.append('file', file, file.name);

    return this.http.post('/api/upload', formData);
  }
}

// file-upload.component.ts

import { Component } from '@angular/core';
import { FileUploadService } from './file-upload.service';

@Component({
  selector: 'app-file-upload',
  template: `
    <input type="file" (change)="onFileChange($event)" />
    <button (click)="uploadFile()">Upload</button>
  `
})
export class FileUploadComponent {
  selectedFile: File | null = null;

  constructor(private fileUploadService: FileUploadService) {}

  onFileChange(event: any) {
    this.selectedFile = event.target.files[0];
  }

  uploadFile() {
    if (this.selectedFile) {
      this.fileUploadService.uploadFile(this.selectedFile).subscribe(
        response => {
          console.log('File uploaded successfully', response);
        },
        error => {
          console.error('Error uploading file', error);
        }
      );
    }
  }
}

// file-upload.service.ts

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class FileUploadService {
  constructor(private http: HttpClient) {}

  uploadFile(file: File) {
    const formData: FormData = new FormData();
    formData.append('file', file, file.name);

    const headers = new HttpHeaders({
      'Content-Type': 'application/octet-stream'
    });

    return this.http.post('/api/upload', formData, { headers, responseType: 'text' });
  }
}

var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0];

var reader = new FileReader();

reader.onload = function(event) {
  var fileContent = event.target.result;

  fetch('your-upload-url', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/octet-stream', // Adjust the Content-Type as needed
    },
    body: fileContent,
  })
  .then(response => response.json())
  .then(data => console.log('Success:', data))
  .catch(error => console.error('Error:', error));
};

reader.readAsArrayBuffer(file);