导航:首页 > 编程语言 > javaapi没有substr

javaapi没有substr

发布时间:2025-04-08 15:32:02

java上传文件后用户是如何访问的(java实现文件上传的三种方式)

JAVA把文件传到服务器.......

文件上传到A以后放到服务器上面然后他就有一个绝对的访问路径也就是对应一个绝对的url这样就好办了

Java提供了对URL访问和大量的流操作的的API,可以很容易的完成对网络上资源的存取,下面的代码段就完成了对一个网站的资源进行访问:

......

destUrl="";

//假设你把文件放到webroot底下的java文件里面

url=newURL(destUrl);

httpUrl=(HttpURLConnection)url.openConnection();

//连接指定的网络资源

httpUrl.connect();

//获取网络输入流

bis=newBufferedInputStream(httpUrl.getInputStream());

......

得到流后下面你自己想怎么操作就怎么操作了

对于怎么得到资源的连接地址这个方法很多你可以专门提供一个Servlet获取到输出的流后Response.write转门提供服务器已上传的文件文件名可以一天位单位返回

客户端用与上面同样的方法得到文件名后拆分然后再继续循环调用上面的方法下载文件就ok了

呵呵希望可以帮助到你

如何通过Java客户端程序通过rest接口访问并上传文件(文档)到web服务器?

图片目录不在项目路径下,直接通过HTTP访问不到,如果你硬是要这么访问,你可以自己写一个Servlet,通过流的方式输出,注意要吧Content-Type设置正确

java上传成功后怎么触发其他操作

javaget方式异步上传_简述Java异步上传文件的三种方式原创

2021-02-1316:31:03

yibbbian

码龄4年

关注

本文为大家分享了三种Java异步上传文件方式,供大家参考,具体内容如下

用第三方控件,如Flash,ActiveX等浏览器插件上传。

使用隐藏的iframe模拟异步上传。

使用XMLHttpRequest2来实现异步上传。

第一种使用浏览器插件上传,需要一定的底层编码功底,在这里我就不讲了,以免误人子弟,提出这点大家可以自行网络。

第二种使用隐藏的iframe模拟异步上传。为什么在这里说的是模拟呢?因为我们其实是将返回结果放在了一个隐藏的iframe中,所以才没有使当前页面跳转,感觉就像是异步操作一样。

隐藏的iframe上传文件

附件:

正在上传...

//上传完成后的回调

functionuploadFinished(fileName){

addToFlist(fileName);

loading(false);

}

functionaddToFlist(fname){

vartemp=["

",

fname,

"删除",

"

"

];

$("#flist").append(temp.join(""));

}

functionloading(showloading){

if(showloading){

$("#uptxt").show();

}else{

$("#uptxt").hide;

}

}

这种技术有两个关键的地方:

1.form会指定target,提交的结果定向返回到隐藏的ifram中。(即form的target与iframe的name属性一致)。

2.提交完成后,iframe中页面与主页面通信,通知上传结果及服务端文件信息

如何与主页面通信呢?

我们用nodejs在接收完了文件后返回了一个window.parent.主页面定义的方法,执行后可以得知文件上传完成。代码很简单:

router.post('/upload2',multipartMiddleware,function(req,res){

varfpath=req.files.myfile.path;

varfname=fpath.substr(fpath.lastIndexOf('\')+1);

setTimeout(function{

varret=["

"window.parent.uploadFinished('"+fname+"');",

""];

res.send(ret.join(""));

},3000);

});

执行后可以打开开发人员选项,你会发现隐藏iframe中返回了服务器的一些数据。

第三种使用XMLHttpRequest2来进行真正的异步上传。

还是先贴出代码:

执行后可以打开开发人员选项,你会发现隐藏iframe中返回了服务器的一些数据。第三种使用XMLHttpRequest2来进行真正的异步上传。还是先贴出代码:

xhrlevel2异步上传

附件:

正在上传...

停止上传

functionupload{

//1.准备FormData

varfd=newFormData;

fd.append("myfile",$("#myfile")[0].files[0]);

//创建xhr对象

varxhr=newXMLHttpRequest;

//监听状态,实时响应

//xhr和xhr.upload都有progress事件,xhr.progress是下载进度,xhr.upload.progress是上传进度

xhr.upload.onprogress=function(event){

if(event.lengthComputable){

varpercent=Math.round(event.loaded*100/event.total);

console.log('%d%',percent);

$("#upprog").text(percent);

}

};

//传输开始事件

xhr.onloadstart=function(event){

console.log('loadstart');

$("#upprog").text('开始上传');

$("#stopbtn").one('click',function{xhr.abort;$(this).hide();});

loading(true);

};

//ajax过程成功完成事件

xhr.onload=function(event){

console.log('loadsuccess');

$("#upprog").text('上传成功');

console.log(xhr.responseText);

varret=JSON.parse(xhr.responseText);

addToFlist(ret.fname);

};

//ajax过程发生错误事件

xhr.onerror=function(event){

console.log('error');

$("#upprog").text('发生错误');

};

//ajax被取消

xhr.onabort=function(event){

console.log('abort');

$("#upprog").text('操作被取消');

};

//loadend传输结束,不管成功失败都会被触发

xhr.onloadend=function(event){

console.log('loadend');

loading(false);

};

//发起ajax请求传送数据

xhr.open('POST','/upload3',true);

xhr.send(fd);

}

functionaddToFlist(fname){

vartemp=["

",

fname,

"删除",

"

"

];

$("#flist").append(temp.join(""));

}

functiondelFile(fname){

console.log('todeletefile:'+fname);

//TODO:请实现

}

functionloading(showloading){

if(showloading){

$("#uptxt").show();

$("#stopbtn").show();

}else{

$("#uptxt").hide();

$("#stopbtn").hide();

}

}

代码有点多,但是通俗易懂。使用过AJAX的人都知道,XHR对象提供了一个onreadystatechange的回调方法来监听整个请求/响应过程。在XMLHttpRequest2级规范中又多了几个进度事件。有以下6个事件:

1.loadstart:在接收到响应数据的第一个字节时触发。

2.progress:在接收响应期间持续不断地触发。

3.error:在请求发生错误时触发。

4.abort:在因为调用abort方法而终止连接时触发。

5.load:在接收到完整的响应数据时触发。

6.loadend:在通信完成或者触发error,abort,load事件后触发。

这次我们可以解读代码:当传输事件开始后,我们便在停止传送按钮上添加点击事件,内置了abort方法可以停止传送。若不点则会正常上传直到传送完毕为止。其后台代码类似第二种方法。

三种方法各有优劣,做个简单的小结吧。

第三方控件交互性和可控性好,因为接近底层,其性能也是很优秀的。但是由于编写难度大通常需要自己安装插件,有时可能需要自己进行编写。

隐藏的iframe方法我个人觉得是非常有思想的一个方法,iframe可以帮我们做很多事。这种方式具有广泛的浏览器兼容性而且不需要安装插件。但是它交互性差,上传过程不可控,而且性能也是很一般的。

XHR2级的纯ajax上传,它必须要版本比较高一点的浏览器(ie9+)。但是它交互性特别好,可以看到上传进度并且是可控的。

java如何访问局域网共享文件?

java访问共享文件夹,读取局域网中一台机器的共享目录中的文件,需要jcifs-1.1.11.jar的支持,使用SMB协议,以下是实现了远程读取文件的功能代码:

package?junit;

import?jcifs.smb.SmbFile;

/**???

?*?java访问局域网共享目录

?*

?*?@author?administrator

?*?@version?1.0?2015-7-6?

?*/

public?class?SmbTest?{

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

????????//smb://xxx:[email protected]/testIndex/??

????????//xxx:xxx是共享机器的用户名密码

????????String?url="smb://192.168.2.188/testIndex/";

????????SmbFile?file?=?new?SmbFile(url);

????????if(file.exists()){

????????????SmbFile[]?files?=?file.listFiles();

????????????for(SmbFile?f?:?files){

????????????????System.out.println(f.getName());

????????????}

????????}

????}

}

java文件上传后,一般怎么和用户挂钩呢?

第一个问题,如果有单独的文件服务器,上传的每一个文件有一个唯一的id,{id,filePath},id与用户关联即可.

第二个问题,可以一组文件分配一个id,表示这些文件是一个组的,id与用户关联.

② sublime怎么自动生成代码

1、首先要熟悉sublime api,插件可以用python开发,这个很好,写好代码,保存到默认的目录应该是\SublimeText2\Data\Packages\User下面,
可以按下快捷键Ctrl + ‘ 打开SublimeText的控制台,执行如下命令就可以运行刚刚写的小插件,测试效果:

Java代码
view.run_command('insert_signature')

2、为了方便使用需要绑定快捷键,在同目录下\SublimeText2\Data\Packages\User 有快捷键文件 Default (操作系统类型).sublime-keymap 3个类似的文件,修改绑定快捷键即可,如下:

自动生成代码头 代码如下:

Java代码
#coding=gbk
'''
Created on -- ::
@author: songpo
'''
#view.run_command('insert_codeheader')
import sublime, sublime_plugin, datetime

class insertSignatureCommand(sublime_plugin.TextCommand):
def run(self, edit):
date = datetime.datetime.now()
dateStr = date.strftime("%Y-%m-%d %X")
text_encode = """#-*- encoding: utf- -*-\n'''\n"""
text_author = """\n\n@author: songpo\n'''\n"""
text = text_encode + 'Created on ' + dateStr + text_author
#for region in the selection
#一个region是一个选择块,一次可以选择多个块
for r in self.view.sel():
str_r = self.view.substr(r)#str_r是所选择块的文本内容
if 'Created on ' in str_r:
if 'Updated on ' in str_r:
text = str_r[:str_r.find('Updated on')] + 'Updated on ' + dateStr + text_author
else:
text = str_r.replace(text_author, '\nUpdated on' + dateStr + text_author)
self.view.erase(edit, r)
self.view.insert(edit, r.begin(), text)

参考博客:http://www.cnblogs.com/restran/archive/2013/01/07/2850254.html

1、自定义快捷键:
sublime的操作体验完全基于配置,如有你愿意多调整,完全可以按照自己的意愿重新定义一个操作体验,有2个快捷键配置文件系统和用户,应该是用户的
可以覆盖系统的,在preferences-按键绑定-系统/用户
即可打开配置。小试一下增加一个eclipse的功能,就是上下调整选中行,添加如下代码:

Java代码
{ "keys": ["alt+up"], "command": "swap_line_up"},
{ "keys": ["alt+down"], "command": "swap_line_down"},

2、Sublime Text 2 的快捷键还支持双重组合,譬如默认情况下,将选中的文字改成大写的热键是“Ctrl+K,
Ctrl+U”,意思是当你先按下 Ctrl+K 之后迅速再按 Ctrl+U
进行触发(只按下Ctrl+K是没有作用的),这样可以避免很多热键冲突,也可以更灵活更多选择地进行热键自定义
3、常用快捷键:
Shift+鼠标右键 (Win) 或 Option+鼠标左键 (Mac) 或使用鼠标中键可以用鼠标进行竖向多行选择
ctrl+p:雷电般快速的文件切换:
Ctrl+P(Win),这次试试先输入一个 @ 号:随心所欲的跳转:快速罗列与定位函数/HTML的元素、跳转到指定行
更牛x的了来了,这些切换定位方法你还可以配合在一起使用!譬如我有一个名为”hello-iplaysoft.js”的文件,里面其中有一个
function叫做”visit_iplaysoft_com”,我现在想要编辑这个函数,那么我只需按下
Ctrl+P,然后输入“heip@vi”回车(模糊匹配,注意前面有颜色的字符),ST2
马上就给我到打开这个文件并定位进去了!够方便了吧?!熟记这几个快捷键,你可以很一气呵成地进行文件切换和编辑

------------------------------------
------------一下是mac版本配置--------------
------------------------------------
看考地址:https://wido.me/sunteya/sublime-text-packages-and-settings/
1、Sublime Text 常用插件和设置
打开 Sublime Text 2 后, 可以在菜单中找到 Preferences -> Settings - User 点击后, 会打开一个编辑器窗口. 在该编辑器窗口下, 就可以输入当前用户的关配置了. 我一般配置如下:

Java代码
{
"color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",
"dictionary": "Packages/Language - English/en_GB.dic",
"font_size": 11.0,
"draw_white_space": "all",// 显示空白字符, 比如 空格 tab
"font_size": 13.0,
"scroll_past_end": true,// 当文件到末尾时还能继续滚动
"trim_automatic_white_space": false, // 关闭自动删除每行前后空格
"ignored_packages":

[
"Vintage"
]
}

2、Package Control 下载插件(格式化xml)
Package Control 是用来管理 Sublime Text 2 的插件的插件. 也是装完后第一个要安装的插件.
首先打开 ctrl+`, 并在打开的 st2 console 中输入:

Java代码
import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'

安装完成后, 应该就可以看到菜单下有 Preferences -> Package Settings 选项了.
常用插件
上面的 Package Control 安装完以后, 就可以通过快捷键 command + shift + p 并输入 install package, 来选择需要安装的插件.
Alignment

这插件用于对齐代码赋值语句, 例如:
var name = "sublimt"
var version = "2.0.1"
var title = "sublime text"
按下快捷键后, 会变成:
var name = "sublimt"
var version = "2.0.1"
var title = "sublime text"
不过这插件默认使用的是 ctrl + cmd + a 和 那个抢了 5个全局个快捷键的QQ冲突, 所以需要修改插件的快捷键. 点击菜单 Preferences -> KeyBindings - User, 加入如下内容
{ "keys": ["super+ctrl+alt+]"], "command": "alignment" }
将快捷键修改成 ctrl + opt + cmd + ], 要改成什么其他的也请自行修改.

Vim 模式
是的,Sublime Text 2 dev 版已经支持 Vim 的编辑模式了,如果更喜欢 Vim 的编辑模式,可以通过以下方法来激活 Vintage mode:
按下 Shift + Command + P 调出命令面板。
输入 settings user 调出 Preferences:Settings - User,并按下回车。
以上两步也可以直接用cmd + ,完成。
这时会打开一个 Preferences.sublime-settings 的文件,如果是第一次修改,它应该是个空文件,把以下文本粘贴进去:

Java代码
{
"ignored_packages": []
}

保存这个文件,这时按下 ESC 键,再按下一些你熟悉的 Vim 命令,是不是很有亲切感

③ 易语言的API里面的GetMoleFileNameA,怎么使用

GetMoleFileNameA是获取一个DLL模块的路径

需要使用GetMoleHandleA,参数一为DLL的函数名或函数地址,这个函数来得到模块句柄

如果是已知窗口句柄欲获取窗口所在的进程可使用以下代码(获取窗口所在进程ID,然后通过进程ID获取该程序的路径):

GetWindowThreadProcessId,取窗口进程ID

.子程序 取进程路径, 文本型, 公开, 取指定进程的程序启动路径(成功返回路径,失败或进程不存在返回空)
.参数 进程ID, 整数型
.局部变量 快照句柄, 整数型
.局部变量 模块信息, 模块信息型
.局部变量 路径, 文本型
快照句柄 = _创建快照 (8, 进程ID)
.如果真 (快照句柄 = -1)
返回 (“”)
.如果真结束
模块信息.size = 1024
_第一个模块 (快照句柄, 模块信息)
路径 = 到文本 (模块信息.模块完整路径)
_关闭对象 (快照句柄)
返回 (路径)

.DLL命令 _创建快照, 整数型, , "CreateToolhelp32Snapshot"
.参数 falg, 整数型
.参数 id, 整数型

.DLL命令 _第一个模块, 整数型, , "Mole32First", , 第一个模块,查找模块
.参数 快照句柄, 整数型
.参数 模块信息, 模块信息型

.DLL命令 _关闭对象, 整数型, , "CloseHandle", 公开, kernel32.dll
.参数 对象句柄, 整数型

.数据类型 模块信息型, 公开, 进程模块信息
.成员 size, 整数型
.成员 mid, 整数型
.成员 pid, 整数型
.成员 gusage, 整数型
.成员 pusage, 整数型
.成员 base, 整数型
.成员 大小, 整数型
.成员 模块句柄, 整数型
.成员 模块文件名, 字节型, , "256"
.成员 模块完整路径, 字节型, , "256"

阅读全文

与javaapi没有substr相关的资料

热点内容
u盘文件给删了 浏览:737
vuejsoauth2 浏览:78
2017微信支付日 浏览:81
机械臂编程如何开发 浏览:21
标书U盘PDF文件要不要签字 浏览:222
ps软件文件复制到d盘 浏览:148
一般工业固废招标文件内容 浏览:583
网站建设报价怎么算 浏览:66
三星a7000升级安卓502 浏览:486
word2010清除分隔符 浏览:781
乐视怎么切换网络 浏览:425
cad打印pdf文件名称与cad不一致 浏览:815
电气与可编程控制是什么 浏览:67
文件名中允许使用英文竖线吗 浏览:531
编程猫在哪里 浏览:775
win8共享文件夹访问权限 浏览:380
cad文件显示为只读不能保存怎么办 浏览:703
如何在系统里忘记网络 浏览:24
中小企业出口数据在哪里找 浏览:715
win8和xp传文件 浏览:75

友情链接