का उपयोग कर डीजेगो में अमेज़ॅन एस 3 में टाइपर इरर अपलोड करने वाली छवि फ़ाइल मैं प्रोग्रामिंग और डैंजो के लिए कुल शुरुआत करने वाला हूं इसलिए मैं मदद की सराहना करता हूं कि शुरुआत करने वाला अपना सिर गोल कर सकता है!बीओटीओ लाइब्रेरी
मैं बोटो लाइब्रेरी के साथ एक अमेज़ॅन एस 3 खाते में छवियों को अपलोड करने का तरीका दिखाने के लिए एक ट्यूटोरियल का अनुसरण कर रहा था, लेकिन मुझे लगता है कि यह Django के पुराने संस्करण के लिए है (मैं 1.1.2 और पायथन 2.65 पर हूं) और कुछ है बदला हुआ।
'InMemoryUploadedFile' वस्तु unsubscriptable है मेरे कोड है:: अपवाद प्रकार: लेखन त्रुटि अपवाद मान मैं कोई त्रुटि मिलती है
Models.py:
from django.db import models
from django.contrib.auth.models import User
from django import forms
from datetime import datetime
class PhotoUrl(models.Model):
url = models.CharField(max_length=128)
uploaded = models.DateTimeField()
def save(self):
self.uploaded = datetime.now()
models.Model.save(self)
views.py:
import mimetypes
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.core.urlresolvers import reverse
from django import forms
from django.conf import settings
from boto.s3.connection import S3Connection
from boto.s3.key import Key
def awsdemo(request):
def store_in_s3(filename, content):
conn = S3Connection(settings.AWS_ACCESS_KEY_ID, settings.AWS_SECRET_ACCESS_KEY)
b = conn.create_bucket('almacmillan-hark')
mime = mimetypes.guess_type(filename)[0]
k = Key(b)
k.key = filename
k.set_metadata("Content-Type", mime)
k.set_contents_from_strong(content)
k.set_acl("public-read")
photos = PhotoUrl.objects.all().order_by("-uploaded")
if not request.method == "POST":
f = UploadForm()
return render_to_response('awsdemo.html', {'form':f, 'photos':photos})
f = UploadForm(request.POST, request.FILES)
if not f.is_valid():
return render_to_response('awsdemo.html', {'form':f, 'photos':photos})
file = request.FILES['file']
filename = file.name
content = file['content']
store_in_s3(filename, content)
p = PhotoUrl(url="http://almacmillan-hark.s3.amazonaws.com/" + filename)
p.save()
photos = PhotoUrl.objects.all().order_by("-uploaded")
return render_to_response('awsdemo.html', {'form':f, 'photos':photos})
urls.py:
(r'^awsdemo/$', 'harkproject.s3app.views.awsdemo'),
awsdemo.html:
<div class="form">
<strong>{{form.file.label}}</strong>
<form method="POST" action ="." enctype="multipart/form-data">
{{form.file}}<br/>
<input type="submit" value="Upload">
</form>
</div>
मैं वास्तव में मदद की सराहना करेंगे। मुझे उम्मीद है कि मैंने पर्याप्त कोड प्रदान किया है।
सधन्यवाद अल
एक चीज़ जो मैं बल्ले से बाहर देखता हूं: 'k.set_contents_from_strong (content) 'वास्तव में' set_contents_from_string' होना चाहिए। –