Browse Source

fix: upload big file

master
hole-thu 3 years ago
parent
commit
57edcb28b6
  1. 2
      Rocket.toml
  2. 21
      src/api/upload.rs

2
Rocket.toml

@ -1,2 +1,2 @@
[default]
limits = { file = "200MB", files = "200MB" }
limits = { file = "200MB" }

21
src/api/upload.rs

@ -1,25 +1,22 @@
use crate::api::{CurrentUser, JsonAPI};
use rocket::form::Form;
use chrono::offset::Local;
use rocket::fs::TempFile;
use rocket::serde::json::json;
use std::fs;
use std::path::Path;
use std::process::Command;
#[derive(FromForm)]
pub struct Upload<'f> {
file: TempFile<'f>,
}
#[post("/upload", data = "<form>")]
pub async fn ipfs_upload(user: CurrentUser, mut form: Form<Upload<'_>>) -> JsonAPI {
#[post("/upload", data = "<file>")]
pub async fn ipfs_upload(user: CurrentUser, mut file: TempFile<'_>) -> JsonAPI {
let file_dir = Path::new("user_files").join(&user.namehash);
fs::create_dir_all(&file_dir)?;
let file = &mut form.file;
// dbg!(&file);
let filename = file.name().unwrap_or("file").to_string()
+ "."
+ &file.content_type().map_or("", |ct| ct.sub().as_str());
let filename = format!(
"{}-{}.{}",
Local::now().timestamp(),
&file.content_type().map_or("unknow", |ct| ct.top().as_str()),
&file.content_type().map_or("file", |ct| ct.sub().as_str())
);
debug!("dir: {}", &file_dir.to_str().unwrap());
file.persist_to(file_dir.join(&filename)).await?;
// dbg!(&file_dir);

Loading…
Cancel
Save