Я сам столкнулся с этой проблемой. Решение, которое я придумал, работает для современных браузеров (IE9+/chrome/FF/Safari). Не уверен, что с этим можно жить. Если так:
1) Вы должны отправить dataURI на свой сервер. Я не думаю, что это возможно с помощью стандартной отправки формы, но вы можете сделать это с помощью HTML5 FormData, отправленного через XHR. Ознакомьтесь с этой записью SO, посвященной основам асинхронной публикации формы с использованием jQuery: Как я могу загружать файлы асинхронно?
В качестве альтернативы, если вы, как и я, используете Angular, вы можете использовать библиотеку angular-file-upload https://github.com/danialfarid/angular-file-upload
После того, как вы создали объект formData, как описано в этом посте, вы можете добавить к нему свой dataURI:
var formData = new FormData($('form')[0]);
formData.uploadImage = yourDataURI;
$.ajax({ // ... set up your ajax post as described in https://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery
});
2) После того, как вы опубликуете uri данных, на стороне сервера будет легко. Paperclip поддерживает URI данных из коробки, просто установите вложение скрепки, равное URI ваших данных. Если бы у вас был объект ActiveRecord с именем ImagePost, со свойством вложения скрепки с именем overlayed_image, ваш контроллер мог бы выглядеть так:
def update
image_post = ImagePost.find(params[:id])
if params['uploadImage']
image_post.overlayed_image = params[:uploadImage]
end
# rest of your controller code goes here
end
person
igmcdowell
schedule
03.07.2014