对接对象存储-本地文件

提供临时存储图片/视频服务

API接口稳定可用 · 支持高并发请求
总调用次数: 加载中...

API接口信息

接口地址

https://yutangxiaowu.cn:3005/upload/file

请求方法

POST

请求参数

参数名 类型 是否必填 说明
file file 必填 本地绝对url/file
bucketName string 可选 默认sdk(可不填),更多添加群聊了解

响应格式

JSON

响应参数

参数名 类型 说明
url string 对象存储url
key string 文件名

代码示例

JavaScript (Axios)
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');

const formData = new FormData();
formData.append('file', fs.createReadStream('本地文件绝对路径'));
formData.append('bucketName', 'sdk');

axios.post('https://yutangxiaowu.cn:3005/upload/file', formData, {
    headers: {
        ...formData.getHeaders()
    }
})
.then(response => {
    console.log('上传结果:', response.data);
})
.catch(error => {
    console.error('上传出错:', error.message);
});
JavaScript (Fetch)
const fileInput = document.getElementById('fileInput'); 
const file = fileInput.files[0];

if (!file) {
    alert('请选择文件');
    return;
}

const formData = new FormData();
formData.append('file', file);
formData.append('bucketName', 'sdk');

fetch('https://yutangxiaowu.cn:3005/upload/file', {
    method: 'POST',
    body: formData
})
.then(response => response.json())
.then(data => {
    console.log('上传结果:', data);
})
.catch(error => {
    console.error('上传出错:', error);
});
HTML (JavaScript)
<!DOCTYPE html>
<html>
<body>
    <input type="file" id="fileInput">
    <button onclick="uploadFile()">上传文件</button>

    <script>
    async function uploadFile() {
        const fileInput = document.getElementById('fileInput');
        const file = fileInput.files[0];
        
        if (!file) {
            alert('请选择文件');
            return;
        }

        const formData = new FormData();
        formData.append('file', file);
        formData.append('bucketName', 'sdk');

        try {
            const response = await fetch('https://yutangxiaowu.cn:3005/upload/file', {
                method: 'POST',
                body: formData
            });
            
            const result = await response.json();
            console.log('上传结果:', result);
            alert('上传成功: ' + JSON.stringify(result));
        } catch (error) {
            console.error('上传失败:', error);
            alert('上传失败: ' + error.message);
        }
    }
    </script>
</body>
</html>
Node.js (Fetch)
const FormData = require('form-data');
const fs = require('fs');
const fetch = require('node-fetch');

const formData = new FormData();
formData.append('file', fs.createReadStream('本地文件绝对路径'));
formData.append('bucketName', 'sdk');

fetch('https://yutangxiaowu.cn:3005/upload/file', {
    method: 'POST',
    body: formData,
    headers: formData.getHeaders()
})
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
Python
import requests

file_path = '本地文件绝对路径'
with open(file_path, 'rb') as file:
    form_data = {
        'file': file,
        'bucketName': (None, 'sdk')
    }
    
    response = requests.post(
        'https://yutangxiaowu.cn:3005/upload/file',
        files=form_data
    )
    
    print('上传结果:', response.json())
PHP
 new CURLFile($filePath),
    'bucketName' => 'sdk'
];

curl_setopt($curl, CURLOPT_URL, $apiUrl);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);
$data = json_decode($response, true);

print_r($data);

curl_close($curl);
?>
Java
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.File;
import java.io.IOException;

public class FileUpload {
    public static void main(String[] args) {
        String apiUrl = "https://yutangxiaowu.cn:3005/upload/file";
        String filePath = "本地文件绝对路径";
        
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpPost httpPost = new HttpPost(apiUrl);
            
            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            File file = new File(filePath);
            builder.addBinaryBody(
                "file",
                file,
                ContentType.APPLICATION_OCTET_STREAM,
                file.getName()
            );
            builder.addTextBody("bucketName", "sdk", ContentType.TEXT_PLAIN);
            
            HttpEntity multipart = builder.build();
            httpPost.setEntity(multipart);
            
            try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
                HttpEntity responseEntity = response.getEntity();
                String result = EntityUtils.toString(responseEntity);
                System.out.println("上传结果: " + result);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
C#
using System;
using System.Net.Http;
using System.Threading.Tasks;

class FileUploader {
    static async Task Main() {
        string apiUrl = "https://yutangxiaowu.cn:3005/upload/file";
        string filePath = "本地文件绝对路径";
        
        using var httpClient = new HttpClient();
        using var formData = new MultipartFormDataContent();
        
        var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(filePath));
        formData.Add(fileContent, "file", System.IO.Path.GetFileName(filePath));
        
        formData.Add(new StringContent("sdk"), "bucketName");
        
        var response = await httpClient.PostAsync(apiUrl, formData);
        var result = await response.Content.ReadAsStringAsync();
        
        Console.WriteLine("上传结果: " + result);
    }
}
Ruby
require 'net/http'
require 'uri'
require 'multipart/post'

api_url = 'https://yutangxiaowu.cn:3005/upload/file'
file_path = '本地文件绝对路径'

uri = URI.parse(api_url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.path)
begin
  file = File.open(file_path, 'rb')
  params = {
    'file' => UploadIO.new(file, 'application/octet-stream', File.basename(file_path)),
    'bucketName' => 'sdk'
  }
  
  request.set_form(params, 'multipart/form-data')
  response = http.request(request)
  
  puts "上传结果: #{response.body}"
ensure
  file.close
end
Go
package main

import (
    "fmt"
    "io"
    "net/http"
    "os"
    "mime/multipart"
    "bytes"
)

func main() {
    apiUrl := "https://yutangxiaowu.cn:3005/upload/file"
    filePath := "本地文件绝对路径"
    
    var requestBody bytes.Buffer
    writer := multipart.NewWriter(&requestBody)
    
    file, err := os.Open(filePath)
    if err != nil {
        panic(err)
    }
    defer file.Close()
    
    part, err := writer.CreateFormFile("file", file.Name())
    if err != nil {
        panic(err)
    }
    io.Copy(part, file)
    
    writer.WriteField("bucketName", "sdk")
    writer.Close()
    
    request, err := http.NewRequest("POST", apiUrl, &requestBody)
    if err != nil {
        panic(err)
    }
    request.Header.Set("Content-Type", writer.FormDataContentType())
    
    client := &http.Client{}
    response, err := client.Do(request)
    if err != nil {
        panic(err)
    }
    defer response.Body.Close()
    
    responseBody, _ := io.ReadAll(response.Body)
    fmt.Println("上传结果:", string(responseBody))
}
Swift
import Foundation

let apiUrl = URL(string: "https://yutangxiaowu.cn:3005/upload/file")!
let filePath = "本地文件绝对路径"
let fileUrl = URL(fileURLWithPath: filePath)

var request = URLRequest(url: apiUrl)
request.httpMethod = "POST"

let boundary = UUID().uuidString
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

var data = Data()

data.append("--\(boundary)\r\n".data(using: .utf8)!)
data.append("Content-Disposition: form-data; name=\"bucketName\"\r\n\r\n".data(using: .utf8)!)
data.append("sdk\r\n".data(using: .utf8)!)

if let fileData = try? Data(contentsOf: fileUrl) {
    let fileName = fileUrl.lastPathComponent
    data.append("--\(boundary)\r\n".data(using: .utf8)!)
    data.append("Content-Disposition: form-data; name=\"file\"; filename=\"\(fileName)\"\r\n".data(using: .utf8)!)
    data.append("Content-Type: application/octet-stream\r\n\r\n".data(using: .utf8)!)
    data.append(fileData)
    data.append("\r\n".data(using: .utf8)!)
}

data.append("--\(boundary)--\r\n".data(using: .utf8)!)

request.httpBody = data

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let data = data {
        print(String(data: data, encoding: .utf8)!)
    }
}
task.resume()
Kotlin
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody.Companion.asRequestBody
import java.io.File

fun main() {
    val apiUrl = "https://yutangxiaowu.cn:3005/upload/file"
    val filePath = "本地文件绝对路径"
    val file = File(filePath)
    
    val client = OkHttpClient()
    
    val requestBody = MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart(
            "file",
            file.name,
            file.asRequestBody("application/octet-stream".toMediaTypeOrNull())
        )
        .addFormDataPart("bucketName", "sdk")
        .build()
    
    val request = Request.Builder()
        .url(apiUrl)
        .post(requestBody)
        .build()
    
    client.newCall(request).execute().use { response ->
        if (!response.isSuccessful) throw Exception("请求失败: ${response.code}")
        println("上传结果: ${response.body?.string()}")
    }
}

在线测试工具

未选择文件

支持图片和视频格式,文件大小不超过10MB