2011-06-07 77 views
2

目前我有一個表單,用於請求用戶信息,例如:名稱,照片和dob上傳表格中的圖像以允許用戶在提交之前裁剪

<form action="action.php" method="post" enctype="multipart/form-data" > 
    <input type="text" name="name" value="" /> 
    <input type="file" name="image" /> 
    <input type="text" name="dob" value="" /> 
    <input type="submit" name="submit" value="submit" /> 
</form> 

我希望用戶能夠上傳,然後在發送表單之前裁剪圖像。什麼是最好的方法來做到這一點?我知道這是不可能嵌套形式。將以下工作:

  • 對瀏覽按鈕
  • 當用戶點擊瀏覽並選擇文件的情況下,圖像通過AJAX上傳
  • 當上傳完成覆蓋呈現給用戶
  • 用戶能夠裁剪圖像 - 用戶點擊保存對話框關閉
  • 尺寸存儲在隱藏字段的形式
  • 用戶完成表單的其餘部分,並提交

還是有更好的解決方案嗎?

+0

這裏找到這方面的工作是一個工具http://marqueetool.net/ – mplungjan 2011-06-07 16:21:29

+0

@mplungjan我將使用http://odyniec.net/projects/ imgareaselect /但我的問題是如何上傳表格之前提交 – xylar 2011-06-07 16:26:00

+0

http://www.html5rocks.com/features/file – js1568 2011-06-07 16:35:17

回答

0

如果您希望服務器執行裁剪,那麼您的解決方案聽起來像是最合理的方法。

但是,您可以讓支持HTML5的瀏覽器的用戶通過畫布執行裁剪並將最終裁剪後的圖像作爲數據發送給您。這個選項的唯一好處是它可以減少服務器的負載,但這基本上意味着你需要實現你的解決方案和這個,除非你期望所有的用戶都使用HTML5瀏覽器。

此外,即使他們提交了應該裁剪的畫布(用戶始終可以繞過javascript),您仍然需要對來自服務器端的圖像執行一些驗證。用戶在技術上也會兩次上傳圖像,除非畫布可以訪問用戶定義的本地文件,而不必在編輯前上傳它們(我當然會認爲瀏覽器中會有安全措施來防止這種情況發生)。

0

我認爲你必須先將圖像保存到磁盤,並且只有你應該能夠裁剪它。結帳http://deepliquid.com/projects/Jcrop/demos.php。你正在使用哪種編程語言?

這顯示了php的實現。

http://www.sanisoft.com/blog/2010/11/08/jcrop-demo-using-php/ 

http://www.cagintranet.com/archive/how-to-use-jcrop-from-within-an-application/ 

如果您使用ajax上傳器,它可能不是刷新頁面。在sucessfull上傳時會有一個javascript回調方法。在該功能上,您可以使用jquery設置圖像src並啓用裁剪UI。

function AjaxUploaderSucess(){ 
    $("#imgBox").show() 
    $("#imgBox").attr("src", uploadimageUrl); 
    $("#imgBox").Jcrop();//Enable your crop ui 
} 
+0

html和javascript - 我希望有一個解決方法 – xylar 2011-06-07 16:28:23

+0

如何將文件保存到服務器?你必須使用一種編程語言來做到這一點,因爲HTML,JavaScript和CSS是用於GUI而不是用於服務器端處理。即使是裁剪圖像,您也必須在某個服務器端進程。 – 2011-06-07 16:31:30

+0

哦對不起,我誤會了,將使用php – xylar 2011-06-07 16:36:16