動態多附件上傳
----
經典解決方案
動態多附件上傳,在目前的b/s
系統中經常會遇到這方面的需求,基於開源的理念,在此我把幾個解決方案做詳細的介紹。目的在於提高自己的描述問題的能力,同時給遇到同樣問題的朋友提供一些線索,以便節省寶貴時間。
上次專案是做乙個
** 管理系統,其中有乙個模組是作品發布,作品發布模組就需要實現這樣乙個功能:
新建乙個作品,作品包含一些基本的資訊,而且要求要有乙個或多個附件,每個附件又要求有作品概要(即作品附件和作品概要一一對應)。
系統要求用
struts
來實現。
在討論解決方案之前,首先要了解的是。在客戶端請求伺服器時提交表單,表單的內容只能為string
型和formfile
型(formfile
型別只有在struts
中才有),不能提交自己定義的dto
物件。但是可以提交自己定義的dto
中的string
成員和formfile
成員。
了解了這個原理之後,我開始闡述第一種解決方案;
第一種解決方案:間接動態多附件上傳
基本思路:定義乙個
productform 類
class productform extends actionform 在
jsp 頁面上用相關的標籤定義作品的字段; 如:
動態多附件則用普通標籤實現,沒有在
productform
中定義相應的字段。因此,
action
取值也不能直接從
actionform
中取值,因為
actionform
中根本沒有相應的成員。
jsp 部分:
<
table id=
'mytable'
>
<
tr><
td>
td>
tr>
table
>
<
html:button
value="
新增新附件
" styleclass
="btn"
onclick
="add_row(mytable);"
property
="add_newfile"
/>
動態新增附件域在jsp中的**是:
var
i = 0;
function
add_row(the_table)
{ //
動態增加一行,
實際上也就是增加乙個**
var
the_row,the_cell;
var
cur_rows=the_table.rows.length;
the_row=cur_rows==
null
?-1:(cur_rows);
// var i=the_row;
var
newrow=the_table.insertrow(i);
//得到插入位置
newrow.id = i;
the_cell=newrow.insertcell(0);
the_cell.innerhtml=
"" +
"" + "<%=
constants.res_new_file_parameter_name
%>
"+i+
"' name='
<%=
constants.res_new_file_parameter_name
%>
"+i+
"' type='file' οnchange='filetypecheck(this);' οnpaste='return false' οnkeypress='return false' οnkeydοwn='return false' οncοntextmenu='return false;'>" +
"刪除此域
' οnclick='del("
+i+");'>" +
"" + "" +
"檔案概要說明
[<=50漢字
]" +
" "
+ "" +
"" + "" +
"" + " "
Discuz 論壇出現附件問題的解決方案
附件問題大多都是論壇不能上傳附件 或者上傳後看不見 或者超過一定尺寸就不能上傳等。綜合起來,你可以考慮以下幾種型別 1.伺服器php配置問題 php預設配置 php.ini 對於附件的大小限制是2m vim etc php.ini upload max filesize 2m 這裡可以改大一些,比如...
github誤將密碼上傳解決方案
今天發現一不小心把學號和密碼上傳到了github。雖然說是0 folk和0 star,但是畢竟是敏感資訊,萬一我還沒畢業前發達了怎麼辦。參考了一些部落格的解決方案,發現csdn大多數都是複製貼上的解決方案。根本沒用。最開始的時候嘗試直接更改之後提交,就是在本地修改原始檔,然後git add a gi...
上傳大檔案解決方案技術
php用超級全域性變數陣列 files來記錄檔案上傳相關資訊的。1.file uploads on off 是否允許通過http方式上傳檔案 2.max execution time 30 允許指令碼最大執行時間,超過這個時間就會報錯 3.memory limit 50m 設定指令碼可以分配的最大記...