用 Hasor 实现文件上传
用 Hasor 实现文件上传
哈库纳 发表于1年前
用 Hasor 实现文件上传
  • 发表于 1年前
  • 阅读 153
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

    Hasor 采用了与 JFinal 类似的方式提供 API,底层的上传机制是来自 apache commons fileupload 并将其进行大量简化后内置到 Hasor 自身。

    因此在 Hasor 中使用文件上传功能无需引入任何第三方 jar 包您就可以使用该功能,先从一个简单的例子说起。

@MappingTo("/fileupload.do")
public class FileupLoad extends WebController {
    public void execute() throws IOException {
        FileItem multipart = this.getOneMultipart("upfile");
        multipart.writeTo(...);
        multipart.deleteOrSkip();
    }
}

    而对应的 html 页面就是一个普通的 文件表单上传。

<form action="/fileupload.do" method="post" enctype="multipart/form-data">
    <input type="file" name="upfile"/>
    <input type="submit" value="上传"/>
</form>

    大一点的文件,在上传时服务器需要一个临时存储。使用 Hasor 上传文件你可以在解析上传时指定临时存储目录,也可以使用 Hasor 环境变量中指定的默认上传地址。默认情况下 Hasor 使用默认位置进行缓存上传数据。

缓存目录

    下面是两种上传方式,第一种是用了 Hasor 默认自带的缓存目录配置。而第二种方式是用户自定义上传的缓存目录和配置信息。

@MappingTo("/fileupload.do")
public class FileupLoad extends WebController {
    public void execute() throws IOException {
        //
        // 方式1: - 使用默认缓存目录
        FileItem multipart = this.getOneMultipart("upfile");
        multipart.writeTo(new File(""));
        multipart.deleteOrSkip();
        //
        // 方式2: - 使用自定义缓存目录
        String cacheDirectory = "...";
        Integer maxPostSize = 1024 * 1024;
        FileItem multipart1 = this.getOneMultipart("upfile", cacheDirectory, maxPostSize);
    }
}

    而在接下来将会介绍一下 Hasor 默认的上传缓存配置。

    临时上传缓存的配置信息保存在:“hasor.fileupload.cacheDirectory”配置项下。这个配置位于 hasor jar 包中的“static-config.xml”配置文件中。具体内容如下:

...
<hasor>
    ...
    <!-- 文件上传 -->
    <fileupload>
        <!-- 上传文件缓存目录 -->
        <cacheDirectory>${HASOR_TEMP_PATH}/fragment</cacheDirectory>
        <!-- 允许的请求大小 ( -1 表示不限制)-->
        <maxRequestSize>-1</maxRequestSize>
        <!-- 允许上传的单个文件大小( -1 表示不限制) -->
        <maxFileSize>-1</maxFileSize>
    </fileupload>
    ...
</hasor>
...

    在这段配置文件中 “HASOR_TEMP_PATH” 表示的是一个环境变量,在 static-config.xml 配置文件的 “environmentVar” 节点下可以找到这个环境变量的内容。

<environmentVar>
    ...
    <!-- 工作目录 -->
    <WORK_HOME>%USER.HOME%/hasor-work</WORK_HOME>
    <!-- 临时文件位置 -->
    <HASOR_TEMP_PATH>%WORK_HOME%/temp</HASOR_TEMP_PATH>
    ...
</environmentVar>

    默认情况下 “HASOR_TEMP_PATH” 的配置信息是 “%WORK_HOME%/temp”,我们看到这又是一组环境变量。“WORK_HOME” 默认情况下表示的是 “USER.HOME”。而这是用户登录系统之后的用户主目录。

    如果您是 linux 系统那么这个目录通常在这里:“/home/xxx”,如果是 window 用户用户住目录会在“c:/users”下面。

标签: Hasor File Upload
共有 人打赏支持
哈库纳
粉丝 928
博文 81
码字总数 149803
作品 4
×
哈库纳
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: