首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# WinForm 上傳音視頻圖片到 Java 後端的完整實現方案

     編輯:程式設計綜合問答

架構圖

WinForm (Client) → HTTP POST (multipart/form-data) → Java Server (Spring MVC / Servlet) → 文件存儲

客戶端核心代碼


using (var client = new HttpClient())
using (var content = new MultipartFormDataContent())
{
    // 文件流
    var fileBytes = File.ReadAllBytes(filePath);
    var fileContent = new ByteArrayContent(fileBytes);
    fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/octet-stream");
    content.Add(fileContent, "file", Path.GetFileName(filePath));

    // 可選:其他元數據
    content.Add(new StringContent("video"), "type");

    var response = await client.PostAsync("https://server:8080/api/upload", content);
    response.EnsureSuccessStatusCode();
    var result = await response.Content.ReadAsStringAsync();
}

或簡單同步版 (WebClient):


using (var wc = new WebClient())
{
    byte[] resp = wc.UploadFile("https://server:8080/api/upload", "POST", filePath);
    // 處理響應
}

Java 後端接收


@PostMapping("/api/upload")
public ResponseEntity upload(@RequestParam("file") MultipartFile file,
                                     @RequestParam("type") String type) {
    if (file.isEmpty()) return ResponseEntity.badRequest().body("文件為空");
    String destPath = "/data/uploads/" + UUID.randomUUID() + "_" + file.getOriginalFilename();
    file.transferTo(Paths.get(destPath));
    // 保存元數據到數據庫...
    return ResponseEntity.ok("上傳成功: " + destPath);
}

關鍵點

  • 大文件建議分片上傳/斷點續傳,客戠端用 HttpClient 流式寫入避免 OOM。
  • 設置合理超時:client.Timeout = TimeSpan.FromMinutes(30)。
  • 安全:HTTPS、Token 鑒權、文件類型/大小校驗、防止路徑遍歷。
  • 跨平台路徑分隔符用 Path.Combine / Paths.get。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved