【发布时间】:2012-02-28 09:14:19
【问题描述】:
我正在使用 Apache HttpComponents'HttpClient 将文件上传到第三方 Web 界面。代码如下所示:
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);
这是按预期工作的。
由于这些数据很敏感,我不希望它存储在客户端。 (程序从网络服务中检索这些数据。我创建文件只是为了上传它。)
所以我正在寻找一种不使用真实文件的方法,而是将其替换为某种内存中的表示形式。我尝试改用InputStreamBody,但这些请求被第三方系统拒绝。
有什么想法可以做到这一点吗?
【问题讨论】:
-
因此,作为客户端,您的应用程序从 Web 服务获取文件并将其上传到您的服务器,就像代理一样......但您不希望您的应用程序有权访问所说的文件?我想说你在这里问错了问题,因为无论你将它存储在哪里——内存或文件——客户端将都可以访问它......
-
是的,但这可能仍然是一个有效的要求 - 如果您信任用户但不希望敏感的个人数据存在磁盘上。
-
我们的网络服务不返回文件,该文件由客户端应用程序创建,仅用于上传。客户端应用程序可以访问此数据,但我不希望将其作为文件存储在客户端计算机上。数据在上传后立即被客户端删除,但在某些情况下可能会失败。在这种情况下,数据将保留在客户端计算机上供任何人访问。
标签: java http file-upload