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

SWFUpload 文件上傳:服務端如何接收流並自行寫入文件

     編輯:程式設計綜合問答

誤區澄清

SWFUpload 只是前端上傳組件,負責將文件以 multipart/form-data POST 發送到服務端 URL。它無法控制服務端是否寫文件,服務端收到請求後完全由後端代碼決定如何處理輸入流。

正確服務端處理流程

  1. 後端接收 HttpRequest,獲取 InputStream(或 Request.Files、MultipartFile)。
  2. 業務邏輯決定:
      • 直接流式寫入磁盤(Files.copy(inputStream, targetPath))。
      • 先緩存內存,處理後再寫入。
      • 上傳至對象存儲(S3/OSS)、數據庫 BLOB。
      • 不寫文件,僅驗證後丟棄(完全可行)。
  3. 返回 JSON 結果({success:true, path:...}),SWFUpload 回調 uploadSuccess。

Java Spring MVC 示例


@PostMapping("/upload")
@ResponseBody
public Map upload(@RequestParam("file") MultipartFile file) {
    Map result = new HashMap<>();
    if (file.isEmpty()) {
        result.put("success", false);
        result.put("msg", "文件為空");
        return result;
    }
    try (InputStream in = file.getInputStream()) {
        // 這裡完全由你控制:寫文件、上傳OSS、解析內容、或直接丟棄
        // Files.copy(in, Paths.get("/data/upload", file.getOriginalFilename()));
        // 自定義處理...
        result.put("success", true);
        result.put("path", "/custom/path/" + file.getOriginalFilename());
    } catch (IOException e) {
        result.put("success", false);
        result.put("msg", e.getMessage());
    }
    return result;
}

結論

「不讓 SWFUpload 在服務端寫文件」本身就是默認行為。請檢查你的後端控制器代碼,確認是否有顯式寫文件邏輯(如 file.transferTo()、FileOutputStream),移除或替換即可。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved