我使用Apache HttpComponents'HttpClient
將文件上傳到第三方Web界面。代碼如下所示:實際上不使用文件的HTTP文件上傳
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("UPLOAD_URL");
FileBody bin = new FileBody(file, filename, "text/csv", "UTF-8");
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("Username", new StringBody("User"));
reqEntity.addPart("Password", new StringBody("Password"));
reqEntity.addPart("bin", bin);
httppost.setEntity(reqEntity);
HttpResponse response = httpclient.execute(httppost);
這是按預期工作。
由於此數據很敏感,我不希望它存儲在客戶端。 (該程序從Web服務中檢索這些數據,我只創建了用於上傳文件的文件)。
所以我正在尋找一種不使用真實文件的方法,而是將其替換爲某種內存中的表示。我嘗試使用InputStreamBody
代替,但這些請求被第三方系統拒絕。
任何想法如何做到這一點?
所以,你的應用程序中,作爲客戶端,從web服務,並上傳到你的服務器獲取文件,像個代理...,但你不希望您的應用能夠訪問所述文件?我會說你在這裏問的是錯誤的問題,因爲無論你在哪裏存儲它 - 內存中或文件 - 客戶端*將*都可以訪問它...... – Marcelo 2012-02-28 09:18:32
是的,但這可能仍然是一個有效的要求 - 如果你信任用戶但不希望敏感的個人數據在磁盤上。 – DNA 2012-02-28 09:25:31
我們的網絡服務*不是*返回一個文件,該文件是由客戶端應用程序創建的,僅用於上傳文件。客戶端應用程序可以訪問這些數據,但我不希望它在客戶機上作爲文件存儲。客戶在上傳數據後立即刪除數據,但可能會出現這種情況。在這種情況下,數據將保留在客戶機上供任何人訪問。 – TPete 2012-02-28 09:31:48