關于上傳文件和提交表單的結合+復制文件問題

使用webuploader上傳文件,還要提交文件對應的屬性。

思路:使用webuploader選擇文件,上傳文件,利用response獲取到上傳成功后,服務器端返回的關于文件的訪問地址,名稱等其他屬性,利用response._raw,獲取到原始數據,或者在服務器端將數據添加到json中,返回的數據就是json數據;

返回的數據,添加到表單的隱藏input中,最后提交表單,在服務器端利用request獲取到提交的參數,request.getparameter(key),對于多個同名的input,會自動組成一個數組,通過遍歷數組,將數據重新組合設置到對象中,存入到數據庫中。

這種思路,必須是先上傳文件,后提交表單,上傳成功返回數據信息,再結合表單提交。

如果是在表單中提交思路就不一樣了。

這里應該有一個默認的知識點,就是表單提交的時候,如果有多條同名的輸入數據,會自動組成一個字符串數組,且是按順序組裝的。再使用request提取的時候,將字符串分割為數組,順序提取就能對應上。

刪除沒有使用的圖片:

一、上傳了,但是沒有和相關數據保存,稱為了無用數據

? 考慮,上傳圖片先保存到臨時文件夾,保存數據后,將關聯的數據復制到新的目錄中。

二、已經關聯的數據,不再使用了

此時,數據已經復制到了最終的目錄中,在刪除相關的對象和屬性的時候,同時刪除磁盤中的數據。

三、復制文件問題

參考http://blog.csdn.net/yqs_love/article/details/51959776

問題描述:在項目中創(chuàng)建了兩個目錄,一個用于存放每次上傳的圖片,另一個存放最終與對象關聯的圖片,本人已經在項目中新建了各級目錄。

使用代碼

/**

* 使用文件通道的方式復制文件

*

* @param s

*? ? ? ? ? ? 源文件

* @param t

*? ? ? ? ? ? 復制到的新文件

*/

public static String fileChannelCopy(File sourceFile, File desinationFile) {

String msg = "0";

FileInputStream fi = null;

FileOutputStream fo = null;

FileChannel in = null;

FileChannel out = null;

try {

fi = new FileInputStream(sourceFile);

if(!desinationFile.exists()){

desinationFile.getParentFile().mkdir();

desinationFile.createNewFile();

}

fo = new FileOutputStream(desinationFile);

in = fi.getChannel();//得到對應的文件通道

out = fo.getChannel();//得到對應的文件通道

in.transferTo(0, in.size(), out);//連接兩個通道,并且從in通道讀取,然后寫入out通道

msg="1";

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

fi.close();

in.close();

fo.close();

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return msg;

}

初始沒有刪除線的代碼,后查看參考文獻后,添加了代碼。

if(!desinationFile.exists()){

desinationFile.mkdir();

desinationFile.createNewFile();

}

但是項目依舊存在問題,createNewFile()拋出異常。

后更改

if(!desinationFile.exists()){

desinationFile.getParentFile().mkdir();

desinationFile.createNewFile();

}

不再拋出異常,而且新建了最底層的目錄和手動在eclipse項目中創(chuàng)建的目錄名一樣。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容