精华内容
下载资源
问答
  • 假如我目前有了相关的信息(比如说是服务器上某文件路径),那么我要怎么根据这个信息到服务器上取然后实现在线阅读呢?html上要怎么才能触发这个action呢? 有没有大神帮我整理整理思路,懂的东西实在太少了
  • 怎么才可以不用输入绝对路径就可以找到相关文件进行操作,有一个网友提供一个思路是通过this.getClass().getResource("/").getPath()来获取当前物理路径然后再根据路径拼接合成需要的物理地址,请各位路过的朋友...
  • 并不是,如果这个文件在你的本地,是保存在本机绝对或者相对路径时,就可以采用这种方式来获取文件对象file,对于链接就需要采用下面一种方式来获取了,这里已经封装为方法,可以直接调用 public static File getfile...

    上传文件至文件服务器之后,返回文件名、文件链接等参数。怎么根据链接实例化File类,并将它写入输出流中呢?

    1. 根据文件链接实例化File
    File file = new File(String url); 
    

    莫非是这样?并不是,如果这个文件在你的本地,是保存在本机绝对或者相对路径时,就可以采用这种方式来获取文件对象file,对于链接就需要采用下面一种方式来获取了,这里已经封装为方法,可以直接调用

    public static File getfile(String url) throws MalformedURLException {
    		URL imgurl = new URL(url);
    		File file = null;
    		InputStream inStream = null;
    		OutputStream os =null;
    		try {
    			file = File.createTempFile("url", "newfile");
    			inStream = imgurl.openStream();
    			os = new FileOutputStream(file);
    			int bytesRead = 0;
    			byte[] buffer = new byte[8192];
    			while ((bytesRead = inStream.read(buffer, 0, 8192)) != -1) {
    				os.write(buffer, 0, bytesRead);
    			}
    		}catch (Exception e) {
    			e.printStackTrace();
    		}finally {
    			try {
    				if (null != os) {
    					os.close();
    				}
    				if (null != inStream) {
    					inStream.close();
    				}
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    		return file;
    	}
    

    2、将文件写入输出流中

    	public static void webDownload(HttpServletRequest request, HttpServletResponse response,Long fileLength,File file,String filename) {
    		response.reset();
    		response.setContentType("application/octet-stream;charset=utf-8");
    		try {
    			response.setHeader("Content-disposition",
    					"attachment; filename=" + new String(filename.getBytes("utf-8"), "ISO8859-1"));
    			response.setHeader("Content-Length", String.valueOf(fileLength));
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		}
    		BufferedInputStream bis = null;
    		BufferedOutputStream bos = null;
    		FileInputStream fis = null;
    		try {
    			fis = new FileInputStream(file);
    			bis = new BufferedInputStream(fis);
    			// 输出流
    			bos = new BufferedOutputStream(response.getOutputStream());
    			byte[] buff = new byte[2048];
    			int bytesread;
    			// 写文件
    			while (-1 != (bytesread = bis.read(buff, 0, buff.length))) {
    				bos.write(buff, 0, bytesread);
    			}
    			fis.close();
    			bis.close();
    			bos.close();
    		} catch (Exception e) {
    			JsonUtil out = new JsonUtil(request, response);
    			out.outObjString("下载失败");
    		}
    	}
    

    参考了以下博客:
    Java实现文件写入——输入输出流(IO流

    展开全文
  • 代码主要主要包括1、前台页面跳转,并查询数据库原始文件名展示2、下载,根据数据库id查询文件存放路径下载@Controller@RequestMapping("/downloadImg")public class DownloadController { @RequestMapping("toIndex...

    第二步:下载代码实现。

    代码主要主要包括

    1、前台页面跳转,并查询数据库原始文件名展示

    2、下载,根据数据库id查询文件存放路径下载

    @Controller@RequestMapping("/downloadImg")public class DownloadController {    @RequestMapping("toIndex")    public ModelAndView toIndex(HttpServletRequest request, HttpServletResponse response){        //想数据库请求查询得到原始文件名展示        ModelAndView mv = new ModelAndView("index");        mv.addObject("name","火影");        return mv;    }    @ResponseBody    @RequestMapping("/download")    public void testUrl(HttpServletRequest request) throws UnsupportedEncodingException {        //获取请求的url        StringBuffer url = request.getRequestURL();        //获取url后面的参数        String urlParame =  request.getQueryString();;        System.out.println("url:"+ url);        System.out.println("urlParame:"+ urlParame);        //根据参数名称获取参数        String name = request.getParameter("name");        System.out.println("name:"+ new String(name.getBytes("ISO-8859-1"),"utf-8"));    }    public ResponseEntity download(HttpServletRequest request) throws IOException {        //读取文件        File file = new File("D:/img/火影2.jpg");        byte[] body = null;        InputStream is = new FileInputStream(file);        body = new byte[is.available()];        is.read(body);        HttpHeaders headers = new HttpHeaders();        //设置文件头        headers.add("Content-Disposition", "attchement;filename=" + new String( "火影2.jpg".getBytes("gb2312"), "ISO8859-1" ));        HttpStatus statusCode = HttpStatus.OK;        ResponseEntity entity = new ResponseEntity(body, headers, statusCode);        return entity;    }}

    展开全文
  • 我删除的时候根据文件名获取文件的绝对路径来删除,但是怎么找到我的WebLogic里面去了? [code="java"]File f = new File("fundSystem/checkresult/" + gr.getFile()).getAbsoluteFile(); System.out.println...
  • 1、数据库中只存储图片文件路径,将图片存储到指定位置,需要使用该图片时先从数据库读取路径,再根据路径获取图片(推荐,常用实现方案)。2、将图片转换成字符串,将字符串存入数据库,需要使用时从数据库中读取出...

    展开全部

    有两种实现思路62616964757a686964616fe4b893e5b19e31333365666139。

    1、数据库中只存储图片文件路径,将图片存储到指定位置,需要使用该图片时先从数据库读取路径,再根据路径获取图片(推荐,常用实现方案)。

    2、将图片转换成字符串,将字符串存入数据库,需要使用时从数据库中读取出字符串再转回图片文件(不推荐,性能低下)。

    附图片与字符串互相转换的代码:import java.io.*;

    public class ImageUtils {

    /**

    * 图片转字符串

    *

    * @param filePath 文件路径

    * @return

    * @throws IOException

    */

    public static String image2String(String filePath) throws IOException {

    try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filePath))) {

    byte[] data = new byte[bis.available()];

    bis.read(data);

    // base64编码

    sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();

    return encoder.encode(data);

    }

    }

    /**

    * 字符串转图片

    *

    * @param imageStr 图片字符串

    * @param filePath 生产图片路径

    * @throws IOException

    */

    public static void string2Image(String imageStr, String filePath) throws IOException {

    sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();

    byte[] data = decoder.decodeBuffer(imageStr);

    try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath))) {

    bos.write(data);

    bos.flush();

    }

    }

    // 测试

    public static void main(String[] args) throws IOException {

    String str = image2String("G:/test/t2.jpg");

    // 运行完成后在对应路径下查看是否生成了新图片

    string2Image(str, "G:/test/t3.jpg");

    }

    }

    展开全文
  • * 获取文件路径 * * @param flag * @return */ public String getSavePath() { String path = "D:\\"; File fDirecotry = new File(path); if (!fDirecotry.exists()) { fDirecotry.mkdirs();...
  • 因自己有七牛云换腾讯云...需求:像七牛云一样,从服务器获取签名后从移动端上传文件,即不需要在移动端配置id与密匙,直接根据签名上传。区别:七牛需要在移动端与服务端各自依赖七牛云SDK,腾讯云COS只需要在服务...

    因自己有七牛云换腾讯云的冲动,毕竟重新绑身份证正反面我是有些抗拒的,So?自己动手丰衣足食,其实这里也没什么好说的,毕竟别人文档写得那么全了,但是觉得还是做下步骤记录。

    腾讯云COS服务器java端SDK目前版本为V5。

    需求:像七牛云一样,从服务器获取签名后从移动端上传文件,即不需要在移动端配置id与密匙,直接根据签名上传。

    区别:七牛需要在移动端与服务端各自依赖七牛云SDK,腾讯云COS只需要在服务端依赖SDK,但是很明显,腾讯云在移动端要做的操作就会多些,毕竟没有SDK。

    注意:这里忽略掉腾讯云各自单独配置SDK的情况,即每个平台独立配置id与密匙完成操作。这些在官方文档上可以很轻松的学习到。

    本文与腾讯云java服务端SDK有关:

    生成预签名链接

    服务端采用SpringBoot或者SpringMVC均可,请随意发挥你的才能。@RequestMapping(value = {"/getCOSUploadToken"}, method = {RequestMethod.POST})

    @ResponseBody

    public BaseResp getCosUploadToken(@Param("fileName") String fileName) {

    String secretId = "your accessKey";

    String secretKey = "your secretKey";

    // bucket的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式

    String bucketName = "buketName-Appid";

    // 1 初始化用户身份信息(secretId, secretKey)

    COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);

    // 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224

    ClientConfig clientConfig = new ClientConfig(new Region("your region"));

    // 3 生成cos客户端

    COSClient cosclient = new COSClient(cred, clientConfig);

    //设置过期时间 3分钟

    Date expiredTime = new Date(System.currentTimeMillis() + 180L * 1000L);

    // 要签名的 key, 生成的签名只能用于对应此 key 的上传 这里路径拼接为上传至COS的head文件夹中

    String key = "/head/"+fileName;

    URL sign = cosclient.generatePresignedUrl(bucketName, key, expiredTime, HttpMethodName.PUT);

    System.out.println(sign);

    BaseResp resp = new BaseResp();

    resp.setStatus(0);

    resp.setMessage("");

    resp.setData(sign);

    return resp;

    }

    生成预签名服务端就这么点内容,简单解释下,这里面需要填写的内容有:secretId、secretKey、bucketName、Region、前两个参数可以在你的云API密匙找到,bucketName即你需要使用的桶名,但是这里有一个要求就是需要在你的桶名后跟上-AppId,当然如果你的桶命名已经是{name}-{appid},则无需重复添加appid,appid也可以在“云API密匙中找到”,从上面代码可已看到该请求会携带一个参数fileName,为什么需要这样?因为签名一次只能对一个key进行签名,也就是对一个文件路径签名,如果你写死,则每次都会覆盖。

    这里的策略是从移动端每次发送需要上传的文件名来进行签名,避免不同的文件会被覆盖。最后返回签名过的链接,注意:预签名完成返回的链接是完整的,即“http://xxxxxxxx.myqcloud.com/你的key?sigin=一串签名”

    这个链接可以直接使用HTTP的PUT请求方式上传文件。

    移动端使用:

    首先你得获取到你想要上传的文件以及签名后的链接。这里使用Okhttp与RxJava结合的方式,方便切换线程和回调等/**

    * 腾讯云COS预签名工具类

    */class UploadUtils {

    /**

    * uploadUrl put请求地址 也就是上面服务端返回的签名后的链接

    * localPath 本地文件路径 你需要上传的文件路径 绝对路径 完整的

    */ fun put(uploadUrl: String, localPath: String): Observable {

    //请求内容类型

    val imageType = MediaType.parse("image/jpeg; charset=utf-8")

    //获取文件名

    val name = localPath.substring(localPath.lastIndexOf("/")+1, localPath.length)

    val file = File(localPath)

    val body = RequestBody.create(imageType, file)

    //创建request

    val request = Request.Builder()

    .url(uploadUrl)

    .put(body) //PUT方式

    .build()

    return Observable.create {

    //设置各种Timeout 然后执行,该部分代码为异步,我在使用时调用了subscribeOn(Schedulers.io())

    val response = OkHttpClient.Builder()

    .connectTimeout(600, TimeUnit.SECONDS)

    .readTimeout(200, TimeUnit.SECONDS)

    .writeTimeout(600, TimeUnit.SECONDS)

    .build()

    .newCall(request)

    .execute()

    //这里的response是没有返回内容的,也就是说,上传后并不会直接给你远程链接,但是code会有,可以判断是否成功

    //拼接上传至COS后的远程链接

    val link = "${QCLOUD_SERVER_ADDRESS}head/$name"

    it.onNext(link)

    }

    }

    }

    这里说下流程,就是使用PUT请求的方式,将文件通过服务器签名的链接上传即可,但是注意需要最后自己拼接远程链接。拼接方法,在你的对象存储中随便上传一个文件,然后点击文件信息,将类似域名“http://你的bucket名-你的appid.你的存储地区.myqcloud.com/”作为baseUrl也就是我上面的QCLOUD_SERVER_ADDRESS,然后拼上你在服务器端配置的key,我这里也是head文件夹+文件名。

    调用时:UploadUtils().put(result, mLocalFileUrl).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())

    .subscribe(object : Observer {

    override fun onComplete() {}

    override fun onSubscribe(d: Disposable) {}

    override fun onNext(t: String) {

    mRemoteFileUrl = t

    //做你要做的 比如我这里是将其加载到某个控件

    GlideUtils.loadUrlImage(this@UserInfoActivity, mRemoteFileUrl, mUserIconIv)

    }

    override fun onError(e: Throwable) {e.printStackTrace()}

    })

    以上,为所有的生成预签名方式以及简单上传使用内容。

    生成签名(有问题)

    生成签名与生成预签名区别在哪呢?区别在生成预签名会生成完整链接,而生成签名则只会生成后面sign=xxxx的那一串签名。且签名需要配合移动端SDK进行使用。根据文档描述来看,应该是需要接入CAM系统进行使用,这里未测试。

    易用性和文档上来讲七牛毫无疑问更胜一筹,但是移动端想精简一些,可考虑腾讯云。

    展开全文
  •  这段时间接触了spring boot +docker以后,也能够将应用通过docker(docker-compose)方式部署起来,但后续的问题怎么也搞不定,比如我想修改应用配置文件中的某一参数,然后重启docker容器就可以正常运行项目,但不...
  • java 面试题 总结

    2009-09-16 08:45:34
    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。 20、EJB与JAVA BEAN的区别? Java Bean 是可复用...
  • 因为是初学者,所以想写个ssh的小项目,练练手, 在网上下了一个商城的后台模板,最近正在...这个属性值到底是给什么,还有,我怎么获取到他的路径文件名称,是在Action中定义file属性,get,set,获取他的值吗?
  • 6.2.1 根据证书文件生成CertPath类型的对象 167 6.2.2 从密钥库读取证书链生成CertPath类型的对象 169 6.2.3 从HTTPS服务器获取证书链 171 6.3 CertPath对象的证书显示和保存 178 6.3.1 显示CertPath中的证书 178 ...
  • System.out.println("识别结果文件路径:"+faceDecetion.getResultPhotoPath()); //将训练样本的特征矩阵写入文本文件中 try { FileUtil.writeMatToFile(faceDecetion.getResult(), ".//...
  • 90. 获取文件的属性? 91.如何开发并部署一个servlet 92.如何取得配置文件中的servlet的参数 93.使servlet成为线程安全的 94.访问标准的CGI变量 95. servlet之间及与jsp间的通讯 96.获取当前绝对路径 97.在servlet中...
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    � Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的有限子集,尚不承诺遵守 Java 任何 Java 规范 , 可能会造 成J ava 阵营的进一步分裂。 � 现有应用完善度不太够,需要的开发工作量较大。--------------------...
  • 这是因为 EditPlus 的语法是设置文件采用的是绝对路径,而在你设置了语法文件之后,再把程序复制到其它目录,因而导致 EditPlus 无法找到该语法文件。 解决办法: 在主程序目录里,找到 Setting.ini 这是 EditPlus ...
  • EditPlus.rar +GCC

    2012-02-17 23:12:16
     系统会根据文件的扩展名选择对应的编译器(C或C++)来进行编译。编译的批处理保存在EditPlus\Commands文件夹下,有兴趣的朋友可以看看。  如果编译出错了。双击下方输出栏的对应消息,就可以跳转到相应的行去,...
  • Editplus 3[1].0

    2011-04-02 10:45:21
    $(FilePath) 文件路径(文件全名,含目录和文件名) $(FileDir) 文件目录(不带文件名) $(FileName) 文件名(不带目录) $(FileNameNoExt) 不带扩展名的文件名(不带目录) $(FileExt) 扩展名(当前文件) $...
  • 一般处理方法是把服务端返回的文件路径记录到数据库里,自己按需要在数据库里再记录一个便于识别的文件名。 6.请问当上传100M以上文件怎么才能获取进度? FastDFS设计是用来存储小文件的,过大的文件处理方案是拆...
  • $(FilePath) 文件路径(文件全名,含目录和文件名) $(FileDir) 文件目录(不带文件名) $(FileName) 文件名(不带目录) $(FileNameNoExt) 不带扩展名的文件名(不带目录) $(FileExt) 扩展名(当前文件) $...
  • ISO:根据ISD 9660有关CD-ROM文件系统标准列出CD-ROM上的文件 ISP:X-Internet签字文件 IST:数字跟踪设备文件 ISU:InstallShield卸装脚本 IT:脉冲跟踪系统音乐模块(MOD)文件 ITI:脉冲跟踪系统设备 ITS:...
  • jsp编程技巧集锦

    2008-03-19 17:23:17
    获取文件的属性? 91.如何开发并部署一个servlet 92.如何取得配置文件中的servlet的参数 93.使servlet成为线程安全的 94.访问标准的CGI变量 95. servlet之间及与jsp间的通讯 96.获取当前绝对路径...
  • 2. RepositoryService:Activiti中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据(例如BPMN2.0 XML文件,表单定义文件,流程定义图像文件等),这些文件都存储在Activiti内建的...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

java怎么根据文件路径获取文件

java 订阅