1. 前台js 後台java 怎麼上傳文件
前台部分代碼:
<form name="buildform" id="buildform" action=" " enctype="multipart/form-data" method="post">
<table>
<tr>
<td colspan="" class="label">文件上傳:</td>
<td class="label" align="left">
<div id="d">
<input type="file" name="fileurl" value="" />
</div>
</td>
</tr>
</table>
後台部分代碼java:
// 創建一個文件上傳的工廠實例
DiskFileItemFactory factory = new DiskFileItemFactory();
// 設置文件緩存地址和緩存大小
factory.setRepository(new File(request.getRealPath("/")));
factory.setSizeThreshold(1024 * 1024 * 20);
// 用上工廠實例創建一個上傳文件對象
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("gbk");
String name = "";
String code = "";
String sredate = "";
String ssetdate = "";
String setworker = "";
String reworker = "";
String memo = "";
String contents = "";
Long redptid = null;
Long setdptid = null;
String fileurl = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date setdate = null;
Date revisedate = null;
// 處理頁面傳過來的表單項
int k = 0;
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
// 遍歷所有的表單項
for (int i = 0; i < items.size(); i++) {
FileItem item = (FileItem) items.get(i);
// 如果這個表單是普通表單域
if (item.isFormField()) {
// 取得表單名
String formname = item.getFieldName();
if(formname.equals("name")){
name = item.getString("gbk");
}else
if(formname.equals("code")){
code = item.getString("gbk");
}else
if(formname.equals("revisedate")){
sredate = item.getString("gbk");
if(!sredate.equals("")){
revisedate = sdf.parse(sredate);
}
}else
if(formname.equals("setdate")){
ssetdate = item.getString("gbk");
if(!ssetdate.equals(""))
setdate = sdf.parse(ssetdate);
}else
if(formname.equals("redptid")){
String s_redptid = item.getString("gbk");
if(!s_redptid.equals("x"))
redptid = Long.parseLong(s_redptid);
}else
if(formname.equals("setdptid")){
String s_setdptid = item.getString("gbk");
if(!s_setdptid.equals("x"))
setdptid = Long.parseLong(s_setdptid);
}else
if(formname.equals("setworker")){
setworker = item.getString("gbk");
}
/*// 取得表單的value值
String formvalue = item.getString("gbk");*/
}
// 如果是文件域
else {
k++;
// 取得文件域的表單域名
String fieldName = item.getFieldName();
// 取得文件名
String fileName = item.getName();
// 取得文件類型
String contentType = item.getContentType();
// 對於上傳文件的存放地址來建立一個輸出流
FileOutputStream fos = new FileOutputStream(request
.getRealPath("/")+"uploadimg/" + imgName);
// 判斷上傳文件是否在緩存中
if (item.isInMemory()) {
// 得到上傳文件輸入流
InputStream is = item.getInputStream();
byte[] buffer = new byte[1024];
int len;
// 將上傳文件寫入伺服器文件中
while ((len = is.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
is.close();
fos.close();
}
}
}
}
2. Java怎樣實現跨伺服器文件上傳
另一台機器也要有處理文件上傳的WEB程序,你可以參考Stream上傳插件(支持HTML5和Flash兩種方式上傳)
Stream 上傳插件
Stream 是解決不同瀏覽器上傳文件的插件,是Uploadify的Flash版和Html5版的結合!
Stream 簡介
Stream 是根據某網的文件上傳插件加工而來,支持不同平台(Windows, Linux, Mac, Android, iOS)下,主流瀏覽器(IE7+, Chrome, Firefox, Safari, 其他)的上傳工作,當然在Html5標准下,還支持文件的斷點續傳功能,有效解決大文件的Web上傳問題!
主要特徵
1. 源碼完全開放,目前有Java、PHP、Perl三種後台語言實現
2. 支持HTML5、Flash兩種方式(跨域)上傳
3. 多文件一起上傳
4. HTML5支持斷點續傳,拖拽等新特性
5. 兼容性好IE7+, FF3.6+, Chrome*,Safari4+,遨遊等主流瀏覽器
6. 進度條、速度、剩餘時間等附屬信息
7. `選擇文件的按鈕`可以自定義
8. 簡單的參數配置實現 靈活多變的功能
9. 支持文件夾上傳(Chrome21+, Opera15+)
10. 支持自定義UI(V1.4+)
指定跨域上傳就可以了