JAVA中如何实现文件分发功能?

JAVA中如何实现文件分发功能?,第1张

这个不用什么技术来做。我说说我的想法。

每个人有个待收件表,当我分发一个文件给某些人的时候,这些人的待收件表就会有数据,数据关联的对象是 要分发的文件(如ID),以及状态(表示接收人查看或接收状态)。

那么,每个接收人一进入这个系统,或者一进入这个待收件模块,系统自动搜索是否有未接收的文件(根据上面说的状态判断),如果有,则弹出提示框。接收人去接收,则根据这个文件(ID)去服务器获取这个文件的下载路径

希望能帮到你。

给一种方式做参考,我这边类似。是将A作为客户端,上传文件到服务器B,服务器B以struts接受请求做处理。使用httpclient。

/**

     * 将文件上传到服务端,并接收其返回信息

     * @param client DefaultHttpClient

     * @param url 服务器url:如:http://localhost:8080/test/upload.action

     * @param filePath 文件路径

     * @param params 上传参数

     * @param encode 编码集,主要用来解析返回的response中的信息

     * @return    解析出的返回信息,如服务器那边的成功提示:“success”

     */

    public static String sendHttpClientPostToUpload(DefaultHttpClient client, String url, String filePath, 

     Map<String, String> params, String encode){

    

     MultipartEntity mpEntity = new MultipartEntity()

        if (params != null && !params.isEmpty()) {

            for (Map.Entry<String, String> entry : params.entrySet()) {

                // 参数名

                StringBody par

try {

par = new StringBody(entry.getValue().toString())

mpEntity.addPart(entry.getKey(), par)

} catch (UnsupportedEncodingException e) {

e.printStackTrace()

}

            }

        }

        

        // 图片

        if (!filePath.equals("")) {

            FileBody file = new FileBody(new File(filePath))

            mpEntity.addPart("file", file)

        }

        

        // 使用HttpPost对象设置发送的URL路径

        HttpPost post = new HttpPost(url)

        

        post.setEntity(mpEntity)

        

        // 创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息

        try {

HttpResponse response = client.execute(post)

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

            // 封装了服务器端返回的数据

            HttpEntity responseEntity = response.getEntity()

            

            //*******这里是对服务器返回的session进行记录的操作,以获取sessionId

//             CookieStore mCookieStore = ((DefaultHttpClient) client).getCookieStore()

//             List<Cookie> cookies = mCookieStore.getCookies()

//             for (int i = 0 i < cookies.size() i++) {

//                 // 如果cookies头和"JSESSIONID" 就记录sessionID

//                 if ("JSESSIONID".equals(cookies.get(i).getName())) {

//                     String sessionId = cookies.get(i).getValue()

//                     break

//                 }

//             }

            //*******完成

            

            InputStream is = responseEntity.getContent()

            

            return changeInputStream(responseEntity.getContent(), encode)

        }

} catch (ClientProtocolException e) {

e.printStackTrace()

} catch (IOException e) {

e.printStackTrace()

}

        

        

     return ""

    } /**

     * 

     * @param inputStream

     * @param encode

     * @return

     */

    private static String changeInputStream(InputStream inputStream,

            String encode) {

 

        ByteArrayOutputStream outputStream = new ByteArrayOutputStream()

        int len = 0

        byte[] date = new byte[1024]

        String result = ""

        try {

 

            while ((len = inputStream.read(date)) != -1) {

 

                outputStream.write(date, 0, len)

            }

            result = new String(outputStream.toByteArray(), encode)

             

            return result

 

        } catch (IOException e) {

            e.printStackTrace()

        }

 

        return null

    }

需要的参数client,new 一个就可以了。

DefaultHttpClient client = new DefaultHttpClient()

类似参考网上有很多,不过大都是你转载他得,他转载你的,能用的不多。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/436903.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-29
下一篇2023-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存